簡體   English   中英

大熊貓:來自兩列的累計計數

[英]Pandas: Cumulative count from two columns

winner  loser   winner_matches  loser_matches
Dave    Harry   1               1
Jim     Dave    1               2
Dave    Steve   3               1

我正在嘗試根據玩家在獲勝者或失敗者列中的名字出現來計算球員參加過多少場比賽(即,由於他參加過每場比賽,上述Dave的跑步次數為3 )。 我是熊貓的新手,並嘗試了cumcountgroupby的一些組合,但是我不確定是否只需要手動遍歷數據集並自己存儲所有名稱。

編輯:澄清一下,我需要如上所述的數據框中的運行總計,而不僅僅是以后打印的系列! 謝謝

首先建立MultiIndex SeriesDataFrame.stack ,然后GroupBy.cumcount ,對DataFrame添加unstackadd_suffix

print (df)
  winner  loser
0   Dave  Harry
1    Jim   Dave
2   Dave  Steve

s = df.stack()
#if multiple columns in original df
#s = df[['winner','loser']].stack()
df1 = s.groupby(s).cumcount().add(1).unstack().add_suffix('_matches')
print (df1)
   winner_matches  loser_matches
0               1              1
1               1              2
2               3              1

最后通過join附加到原始DataFrame

df = df.join(df1)
print (df)
  winner  loser  winner_matches  loser_matches
0   Dave  Harry               1              1
1    Jim   Dave               1              2
2   Dave  Steve               3              1

你需要壓扁

 pd.Series(df[['winner','loser']].values.flatten()).value_counts()
 [out]
 Dave     3
 Jim      1
 Harry    1
 Steve    1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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