pandas

Pandas|筛选包含特定字符的列

2022-09-18  本文已影响0人  温暖的Lily

问题描述一:

dataframe的某一列为字符串格式,想筛选出含有特定字符串的行,如书目数据的“简单分类号”列,筛选包含['N','O','P','Q','S','TB','TM','TN','TP','TS']分类号的数据。

使用模糊匹配,具体实现代码如下:

select_list = ['N','O','P','Q','S','TB','TM','TP']

select_list  = '|'.join(select_list)

select_data = data[data['简单分类号'].str.contains(select_list)]

select_data

如果取出不包含这些字符串的数据呢:

在前面加上一个~波浪符号就可以了select_data = data[~data['简单分类号'].str.contains(select_list)]

但是,请注意但是,这样得到的数据有一些问题,TQ,TS这样的类也会取出,因为contains是包含的意思,我们需要得到以select_list内字母开头的行,更好的方法如下:

select_data = data.loc[data['分类号'].str.startswith(tuple(select_list))]

问题描述二:

如果要查找多个列中的特定字符怎么办:

select_not_list = ['高职','高专','中职','中专']

select_not_list  = '|'.join(select_not_list)

select_not_data = select_data[(~select_data['列A'].str.contains(select_not_list)) & (~select_data['列B'].str.contains(select_not_list)) & (~select_data['列C'].str.contains(select_not_list))]

问题描述三:

要是多个列,每个列的筛选条件还不一样怎么办:

select_not_data = select_data[~select_data[A1].str.contains('条件1')|select_data[A2].str.contains('条件2‘)]

上一篇下一篇

猜你喜欢

热点阅读