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]。
我想知道這是否可能?
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]。
我想知道這是否可能?
isin
返回列值是否在您傳遞的值中。你想檢查你傳遞的值是否在列值中。
據我所知,這個沒有直接的快捷方式,但可以使用map
做到這一點:
>>> dafr[dafr.b.map(lambda x: 2 in x)]
a b
0 1 [1, 2, 3]
1 2 [2, 3, 4]
接受欣賞的簡短說明。 – MarkokraM
如果存儲在B元組的列,而不是表的列,afr[dafr['b'].apply(lambda x: 2 in x)]
將執行得相當快。
一般來說,將非標量值存儲在pandas DataFrame中是不可取的。也許有更好的方法來構造數據框,或者數據框可能不適合您的數據。 – exp1orer