您可以通過總結列(基本上串聯的內容),然後要求他們pd.value_counts
做到這一點。例如(修改您的數據幀定義略有所以它不會引發錯誤):
df = pd.DataFrame(dict(a=[(1,2),(2,3),(1,)],
b=[(1,3),(2,5),()],
c=['a','b','c']))
counts = pd.DataFrame({col: pd.value_counts(df[col].sum())
for col in ['a', 'b']})
counts.plot(kind='bar')
(以前的問題的答案的原始版本):
你可以使用地圖獲取2
所在的所有行a
>>> df = pd.DataFrame(dict(a=[[1,2],[2,3],[1,3]], b=['a','b','c']))
>>> df
a b
0 [1, 2] a
1 [2, 3] b
2 [1, 3] c
>>> df[df.a.map(lambda L: 2 in L)]
a b
0 [1, 2] a
1 [2, 3] b
你可以完成類似的用跟隨一個filter
一個groupby
,但你首先要在a
值,這樣他們可哈希轉換爲一個元組(可以是組密鑰)的東西:
>>> df.groupby(df.a.map(tuple)).filter(lambda group: 2 in group.name)
a b
0 [1, 2] a
1 [2, 3] b
一旦你有這些結果,你可以使用,例如result['a'] = 2
來替換a
列中的值。
http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – WoodChopper
感謝,我重新寫的問題,包括上下文。 – Farcaller
我又重新編寫了它,以指定我實際*想要獲得的內容。抱歉。 – Farcaller