为了账号安全,请及时绑定邮箱和手机立即绑定

如果列中的值位于值的集合列表[重复]中,则筛选数据行

如果列中的值位于值的集合列表[重复]中,则筛选数据行

撒科打诨 2019-06-14 16:16:32
如果列中的值位于值的集合列表[重复]中,则筛选数据行我有一只Python熊猫DataFramerpt:rpt<class 'pandas.core.frame.DataFrame'>MultiIndex: 47518 entries, ('000002', '20120331') to ('603366', '20091231')Data columns:STK_ID                     47518  non-null values STK_Name                  47518  non-null values RPT_Date                  47518  non-null values sales                     47518  non-null values我可以过滤股票ID为'600809'就像这样:rpt[rpt['STK_ID'] == '600809']<class 'pandas.core.frame.DataFrame'>MultiIndex: 25 entries, ('600809', '20120331') to ('600809', '20060331')Data columns:STK_ID                     25  non-null values STK_Name                  25  non-null values RPT_Date                  25  non-null values sales                     25  non-null values我想把一些股票的所有行放在一起,比如['600809','600141','600329']..这意味着我需要这样的语法:stk_list = ['600809','600141','600329']rst = rpt[rpt['STK_ID'] in stk_list] # this does not works in pandas既然熊猫不接受上面的命令,如何达到目标?
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

使用isin方法。rpt[rpt['STK_ID'].isin(stk_list)].


查看完整回答
反对 回复 2019-06-14
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

isin()如果有精确匹配的列表,但如果要查找部分匹配或子字符串列表,则可以使用str.contains方法和正则表达式。

例如,如果我们想返回DataFrame,那么所有以'600'然后是任何三个数字:

>>> rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')] # ^ means start of string...   STK_ID   ...                            
        # [0-9]{3} means any three digits...  '600809'  ...                                  
          # $ means end of string...  '600141'  ......  '600329'  ......      ...   ...

假设现在我们有一个字符串列表,我们希望在'STK_ID'以结束,例如。

endstrings = ['01$', '02$', '05$']

我们可以用regex‘或’字符连接这些字符串。|并将字符串传递给str.contains若要筛选DataFrame,请执行以下操作:

>>> rpt[rpt['STK_ID'].str.contains('|'.join(endstrings)]...   STK_ID   ......  '155905'  ......  '633101'  ...... 
 '210302'  ......      ...   ...

最后,contains可以忽略大小写(通过设置case=False),允许您在指定要匹配的字符串时具有更大的通用性。

例如,

str.contains('pandas', case=False)

相配PANDASPanDAspaNdAs123等等。


查看完整回答
反对 回复 2019-06-14
  • 3 回答
  • 0 关注
  • 419 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信