我有一个 Dataframe ,其中包含列“team”、“home_or_away”和“result”,用于存储结果(“W”:赢或“L”:在主场(“H”)或客场(“A”)的体育赛事中,“X”、“Y”、“Z”队:
df = pd.DataFrame({'team': ['X', 'X', 'X', 'X', 'Y', 'Y', 'Z', 'Z', 'Z', 'Z'],'home_or_away':['H', 'A', 'A', 'A', 'H', 'H', 'H', 'A', 'H', 'H'],'result':['W', 'W', 'W', 'L', 'W', 'L', 'W', 'L', 'L', 'L']})
我想生成每个团队、每个活动地点的赢/输百分比(“A”或“H”)
我已经生成了一个 Dataframe ,其中包含每个团队和活动地点的赢/输总数,groupby代码如下:
groupedDf =df.groupby(['team', 'home_or_away','result'])[['result']].count()
print(groupedDf)
输出如下:
result
team home_or_away result
X A L 1
W 2
H W 1
Y H L 1
W 1
Z A L 1
H L 2
W 1
但是,我希望有一个额外的列与百分比,如下所示:
result Perc
team home_or_away result
X A L 1 33.33
W 2 66.66
H W 1 100
Y H L 1 50
W 1 50
Z A L 1 100
H L 2 66.66
W 1 33.33
我怎么能这样对待Pandas呢?谢谢
2条答案
按热度按时间ijxebb2r1#
省略按
result
分组,而使用value_counts
:输出:
可选地乘以100。
bzzcjhmw2#
您可以使用
groupby.transform('sum')
获取每个团队/位置的总数:输出: