par*_*ist 0 python filter pandas
我想使用 pandas 数据帧过滤器的简单性,但使用多个LIKE标准。我的数据框中有很多列,我想将列标题组织到不同的列表中。
例如 - 任何包含“时间”的列标题。
df.filter(like='time',axis=1)``
Run Code Online (Sandbox Code Playgroud)
然后是包含“分钟”或“秒”的任何列。但我如何在这个简单、干净的声明中允许多个标准呢?我已经尝试了很多类似的迭代,有没有办法做到这一点,或者这个声明不允许这样做?如果没有,欢迎使用其他简单、干净的方法!
df.filter(like=('mins','secs'),axis=1)
Run Code Online (Sandbox Code Playgroud)
不要使用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
Run Code Online (Sandbox Code Playgroud)
如果您希望过滤“不像”,我发现使用列表理解来查找要保留的标签更容易。在这里,我们排除任何包含或的'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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6360 次 |
| 最近记录: |