簡體   English   中英

如何在 Pandas DataFrame 中過濾包含空列表的行?

[英]How to filter rows containing empty lists in a pandas DataFrame?

我有一個如下所示的 DataFrame:

A    B    C    D
foo  foo  foo  ['list_value']
bar  bar  bar  ['list_value', 'another_list_value']
baz  baz  baz  []

如何過濾掉空列表? 我正在嘗試.isin但它給我一個錯誤:

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

SystemError: <built-in method view of numpy.ndarray object at 0x0000017ECA74BF30> returned a result with an error set

我也檢查了這個問題,但無法弄清楚如何在 DataFrame 上下文中實現。

任何幫助將不勝感激。

通過astype將列表轉換為 boolean ,空列表返回False s,因此過濾工作很好:

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]

另一種解決方案是使用Series.str.len按長度過濾 - 它適用於所有可迭代對象:

df1 = df[df['D'].str.len() != 0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM