如何在包含空列表的数据框中删除行?

Nel*_*uis 6 dataframe python-3.x pandas

我创建了一个包含3列的数据框,第三列包含列表,我想删除该单元格中包含空列表的行。

我尝试过

df[df.numbers == []] and df[df.numbers == null]
but nothing works. 
Run Code Online (Sandbox Code Playgroud)
name    country    numbers

Lewis   Spain      [1,4,6]
Nora    UK         []
Andrew  UK         [3,5]

Run Code Online (Sandbox Code Playgroud)

结果将是一个没有Nora行的数据帧

ank*_*_91 10

使用series.str.len()检查元素的长度在列表中,然后过滤掉它等于0:

df[~df.numbers.str.len().eq(0)]
Run Code Online (Sandbox Code Playgroud)
     name country    numbers
0   Lewis   Spain  [1, 4, 6]
2  Andrew      UK     [3, 5]
Run Code Online (Sandbox Code Playgroud)


WeN*_*Ben 7

嗯检查 bool

df[df.numbers.astype(bool)]
Run Code Online (Sandbox Code Playgroud)

  • 我个人最喜欢的。 (2认同)

taw*_*eel 6

只需检查 len > 0

df[df['numbers'].str.len()>0]
Run Code Online (Sandbox Code Playgroud)


the*_*orm 5

利用任何列表乘以 0 的结果都会给出一个空列表的想法,一种方法是:

In [29]: df[df.numbers != df.numbers * 0]

Out[29]: 
     name    numbers country
0   Lewis  [1, 4, 6]   Spain
2  Andrew     [3, 5]      UK
Run Code Online (Sandbox Code Playgroud)