Dan*_*art 5 python dataframe pandas
在一个pandas数据帧中,我有一个字段'amp',应该由长度为495的列表填充.是否有一种panda-ic方式可以快速过滤这个长度,这样所有字段'amp'的行都不等于495被丢弃了?
我试过了
df[len(df['amp']) == 495]
Run Code Online (Sandbox Code Playgroud)
这回来了
KeyError: False
Run Code Online (Sandbox Code Playgroud)
提前致谢.
Set*_*ton 16
如果您特别需要len,那么@ MaxU的答案是最好的.
对于更通用的解决方案,您可以使用Series 的map方法.
df[df['amp'].map(len) == 495]
Run Code Online (Sandbox Code Playgroud)
这将适用len于您想要的每个元素.使用此方法,您可以使用任何任意函数,而不仅仅是len.
试试这个:
df[df['amp'].str.len() == 495]
Run Code Online (Sandbox Code Playgroud)
演示:
In [77]: df
Out[77]:
a
0 [1, 2, 3, 4, 5]
1 [1, 2, 3]
2 [-1]
In [78]: df.a.str.len()
Out[78]:
0 5
1 3
2 1
Name: a, dtype: int64
In [79]: df[df.a.str.len() == 3]
Out[79]:
a
1 [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)