熊猫使用多个类似条件过滤列名称

超自然主义者

我想使用简单的pandas数据框过滤器,但要使用多个LIKE条件。我在数据框中有很多列,我想将列标题组织到不同的列表中。

例如-任何包含“时间”的列标题。

df.filter(like='time',axis=1)``

然后任何包含“分钟”或“秒”的列。但是,如何在这个简单,清晰的陈述中考虑多个条件?我已经尝试过类似这样的多次迭代,有没有办法做到这一点,或者该语句不允许这样做?如果没有,欢迎使用其他简单,干净的方法!

df.filter(like=('mins','secs'),axis=1)
洛兹

不要使用likelike用于保留标签like in label == True

相反您需要DataFrame.filter regex类型过滤,将您的子字符串与|

import pandas as pd
df = pd.DataFrame(data=1, columns=['foo', 'bar', 'foobar', 'bazz'], index=[0])

df.filter(regex='foo|bar')
#   foo  bar  foobar
#0    1    1       1

如果您希望过滤“不喜欢”,我发现使用列表推导查找要保留的标签会更容易。在此,我们排除任何包含'foo'或的标签'bar'

cols = [label for label in df.columns if not any(x in label for x in ['foo', 'bar'])]

df[cols]
#   bazz
#0     1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章