如何过滤 pandas DataFrame 中包含空列表的行?

Vin*_*ara 4 python pandas

我有一个如下所示的数据框:

A    B    C    D
foo  foo  foo  ['list_value']
bar  bar  bar  ['list_value', 'another_list_value']
baz  baz  baz  []
Run Code Online (Sandbox Code Playgroud)

如何过滤掉空列表?我正在尝试,.isin但它给了我一个错误:

df[df['D'].isin([])]

SystemError: <built-in method view of numpy.ndarray object at 0x0000017ECA74BF30> returned a result with an error set
Run Code Online (Sandbox Code Playgroud)

我也检查了这个问题,但无法弄清楚如何在 DataFrame 上下文中实现。

任何帮助将不胜感激。

jez*_*ael 6

将列表转换为布尔值 by astype,空列表返回Falses,因此过滤效果很好:

df1 = df[df['D'].astype(bool)]
print (df1)
     A    B    C                                 D
0  foo  foo  foo                      [list_value]
1  bar  bar  bar  [list_value, another_list_value]
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是按长度过滤Series.str.len- 它适用于所有可迭代对象:

df1 = df[df['D'].str.len() != 0]
Run Code Online (Sandbox Code Playgroud)