簡體   English   中英

使用 pandas 計算兩列之間的組合

[英]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 類似的另一種方法是使用stackgroupby

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM