我有一個DataFrame,有3列(A,B,C)和大量的行。在每個列中都有不同類型的元素:A1,A2 ... B1,B2 ...和C1,C2 ...。在熊貓中使用groupby屬性
我想查找特定組合(例如(A1,B2,C2))在一行中出現的次數。然後,我想要生成頻率計數超過固定閾值的所有組合的(摘要)列表。例如:組合計數(A1,B2,C2)5(A2,B2,C2)7 ....如果固定值爲6.
我是熊貓和numpy的新手。這可以使用熊貓高效地完成,如果是的話,怎麼樣?
我有一個DataFrame,有3列(A,B,C)和大量的行。在每個列中都有不同類型的元素:A1,A2 ... B1,B2 ...和C1,C2 ...。在熊貓中使用groupby屬性
我想查找特定組合(例如(A1,B2,C2))在一行中出現的次數。然後,我想要生成頻率計數超過固定閾值的所有組合的(摘要)列表。例如:組合計數(A1,B2,C2)5(A2,B2,C2)7 ....如果固定值爲6.
我是熊貓和numpy的新手。這可以使用熊貓高效地完成,如果是的話,怎麼樣?
df = pd.DataFrame({'A':['A1','A1','A2','A3'],
'B':[4,4,6,4],
'C':[7,7,9,7]})
print (df)
A B C
0 4 7 C1
1 4 7 C1
2 6 9 C2
3 4 7 C3
s = df.groupby(["A", "B","C"]).size()
print (s)
A B C
A1 4 7 2
A2 6 9 1
A3 4 7 1
dtype: int64
對於篩選列表增值boolean indexing
:
L = s.index[s > 1].tolist()
print (L)
[('A1', 4, 7)]
謝謝。這正是我想要的。 –
如果我的回答很有幫助,請不要忘記[接受](http://meta.stackexchange.com/a/5235/295067)它。謝謝。 – jezrael
如何獲取大小值?即當我知道組合說(A1,4,7)時我怎麼能找到尺寸。 –
只使用熊貓,一個辦法可能是使用數據幀.groupby():
counts = dict()
for group in df.groupby(['It', 'Cc', 'Ct']):
print(group)
counts[group[0]] = len(group[1])
一個更快的方法可能是你的數據幀轉換成一個列表,並從集合使用計數器:
from collections import Counter
listed_df = [tuple(line) for line in list(df.values)]
counts = Counter(listed_df)
您需要添加示例代碼和數據。另外,爲了清楚起見,只需調用列A,B,C及其值A1,A2,...,B1,B2,...,C1,C2 ...。 – smci
歡迎來到StackOverflow。請花時間閱讀這篇文章[如何提供一個偉大的熊貓示例](http://stackoverflow.com/questions/20109391/how-to-make-good-reproducible-pandas-examples)以及如何提供[最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve)並相應地修改您的問題。 [如何提出一個好問題](http://stackoverflow.com/help/how-to-ask)上的這些技巧也可能有用。 – jezrael
是的,它可以在熊貓中完成。當你說*「我想找到一個特定的組合(a_i,b_j,c_k)在一行中出現的次數。」*,你想要你的輸出是一個表,或什麼?向我們展示示例輸出。然後,寫一個更好的標題,因爲*「使用熊貓迭代數據框」*不會告訴我們什麼。 – smci