美文网首页pandas
Pandas|筛选包含特定字符的列

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

作者: 温暖的Lily | 来源:发表于2022-09-18 10:05 被阅读0次

    问题描述一:

    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‘)]

    相关文章

      网友评论

        本文标题:Pandas|筛选包含特定字符的列

        本文链接:https://www.haomeiwen.com/subject/vsfportx.html