按行值过滤pandas数据时遇到的问题?

时间:2017-01-05 01:06:43

标签: python python-3.x pandas

我有以下pandas数据帧:

    Col
0   []
1   []
2   [(foo, bar), (foo, bar)]
3   []
4   []
5   []
6   []
7   [(foo, bar), (foo, bar)]

我想删除所有空列表(*):

    Col
2   [(foo, bar), (foo, bar)]
7   [(foo, bar), (foo, bar)]

对于上面我尝试过:

df = df.loc[df.Col != '[]']
df

df.pipe(lambda d: d[d['Col'] != '[]'])

然而,它们都没有奏效。所以,我的问题是如何从数据框中删除所有空列表,如(*)?。

2 个答案:

答案 0 :(得分:3)

切换数据框,好像值为strings而不是列表可能有效:

df[df.astype(str)['Col'] != '[]']

答案 1 :(得分:1)

您可以使用.str访问者检查列表的长度:

df[df.Col.str.len() != 0]

#                        Col
#3  [(foo, bar), (foo, bar)]
#6  [(foo, bar), (foo, bar)]