根据Pandas中的字符串列表过滤出行

发布于 2021-01-29 17:47:15

我有一个很大的时间序列数据帧(称为 df ),前5条记录如下所示:

df

         stn     years_of_data  total_minutes avg_daily TOA_daily   K_daily
date                        
1900-01-14  AlberniElementary      4    5745    34.100  114.600 0.298
1900-01-14  AlberniWeather         6    7129    29.500  114.600 0.257
1900-01-14  Arbutus                8    11174   30.500  114.600 0.266
1900-01-14  Arrowview              7    10080   27.600  114.600 0.241
1900-01-14  Bayside                7    9745    33.800  114.600 0.295

目标:

我正在尝试删除 “ stn” 列中存在列表中 任何 字符串
行。因此,我基本上是在尝试过滤此数据集,以使其不包含以下列表中包含任何字符串的行。

尝试:

remove_list = ['Arbutus','Bayside']

cleaned = df[df['stn'].str.contains('remove_list')]

返回值:

出[78]:

stn years_of_data   total_minutes   avg_daily   TOA_daily   K_daily
date

没有!

我尝试了一些引号,方括号甚至是lambda函数的组合;尽管我还很新,所以可能没有正确使用语法。

关注者
0
被浏览
43
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    使用isin

    cleaned = df[~df['stn'].isin(remove_list)]
    
    In [7]:
    
    remove_list = ['Arbutus','Bayside']
    df[~df['stn'].isin(remove_list)]
    Out[7]:
                              stn  years_of_data  total_minutes  avg_daily  \
    date                                                                     
    1900-01-14  AlberniElementary              4           5745       34.1   
    1900-01-14     AlberniWeather              6           7129       29.5   
    1900-01-14          Arrowview              7          10080       27.6
    
                TOA_daily  K_daily  
    date                            
    1900-01-14      114.6    0.298  
    1900-01-14      114.6    0.257  
    1900-01-14      114.6    0.241
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看