我想使用简单的pandas数据框过滤器,但要使用多个LIKE
条件。我在数据框中有很多列,我想将列标题组织到不同的列表中。
例如-任何包含“时间”的列标题。
df.filter(like='time',axis=1)``
然后任何包含“分钟”或“秒”的列。但是,如何在这个简单,清晰的陈述中考虑多个条件?我已经尝试过类似这样的多次迭代,有没有办法做到这一点,或者该语句不允许这样做?如果没有,欢迎使用其他简单,干净的方法!
df.filter(like=('mins','secs'),axis=1)
不要使用like
。like
用于保留标签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] 删除。
我来说两句