2015-01-14 53 views
1
import pandas as pd 

dafr = pd.DataFrame({'a': [1,2,3], 'b': [[1,2,3],[2,3,4],[3,4,5]]}) 

我試着這樣做:如果列是列表,是否可以過濾Pandas DataFrame列?

dafr[dafr['b'].isin(2)] 

應返回行有列出:[1,2,3] & [2,3,4]。

我想知道這是否可能?

+0

一般來說,將非標量值存儲在pandas DataFrame中是不可取的。也許有更好的方法來構造數據框,或者數據框可能不適合您的數據。 – exp1orer

回答

3

isin返回列值是否在您傳遞的值中。你想檢查你傳遞的值是否在列值中。

據我所知,這個沒有直接的快捷方式,但可以使用map做到這一點:

>>> dafr[dafr.b.map(lambda x: 2 in x)] 
    a   b 
0 1 [1, 2, 3] 
1 2 [2, 3, 4] 
+0

接受欣賞的簡短說明。 – MarkokraM

2
dafr[dafr['b'].apply(lambda x: 2 in x)] 
+0

最快回復的榮譽! – MarkokraM

0

如果存儲在B元組的列,而不是表的列,afr[dafr['b'].apply(lambda x: 2 in x)] 將執行得相當快。

相關問題