如何根据条目的长度过滤pandas数据帧

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.


Max*_*axU 6

试试这个:

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)