[英]Counting combinations between two columns using pandas
我有一個這樣的數據框:
1 | 2 |
---|---|
一個 | 乙 |
乙 | 一個 |
C | D |
C | D |
D | C |
我希望能夠像這樣計算組合的實例數:
信件 | 數數 |
---|---|
AB | 2 |
光盤 | 3 |
所以本質上我希望能夠將 CD 和 DC 算作同一個實例,以便計算出現次數。
我努力了
df.groupby(['1','2']).size().reset_index().rename(columns={0:'count'})
但這並不能將 AB 與 BA 一樣計算,而是分別計算它們的出現次數。 如果有人對如何做到這一點有任何建議,將不勝感激。
由於您沒有將計數返回到原始 df,因此您可以先排序。
df.values.sort()
df['letters'] = df['1'].astype(str) + df['2'].astype(str)
df.groupby('letters').size().reset_index(name='count')
Output
letters count
0 AB 2
1 CD 3
與 Chris 類似的另一種方法是使用stack
和groupby
。
s = df.stack().sort_values().groupby(level=0).agg(''.join).to_frame('Letters')
s.groupby('Letters',as_index=False).agg(Count=('Letters','size'))
Letters Count
0 AB 2
1 CD 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.