[英]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
)。 我是熊貓的新手,並嘗試了cumcount
和groupby
的一些組合,但是我不確定是否只需要手動遍歷數據集並自己存儲所有名稱。
編輯:澄清一下,我需要如上所述的數據框中的運行總計,而不僅僅是以后打印的系列! 謝謝
首先建立MultiIndex Series
由DataFrame.stack
,然后GroupBy.cumcount
,對DataFrame
添加unstack
與add_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.