gpt4 book ai didi

python - 用于计算 2 列值的 Pandas groupby/pivot 表

转载 作者:太空宇宙 更新时间:2023-11-03 12:35:30 25 4
gpt4 key购买 nike

我有一个像这样的 pandas DataFrame

week  player_a  player_b
1 True True
1 True False
1 False False
2 False True
2 False False
2 True False

我想按周计算每个玩家的 True 和 False 的数量,但我似乎无法将其变成方便的 pandas groupby 或数据透视表操作。期望的结果如下所示:

week            True  False
player
1 player_a 2 1
player_b 1 2
2 player_a 1 2
player_b 1 2

最佳答案

使用DataFrame.melt先数再数crosstab :

df1 = df.melt('week', var_name='player')

df = pd.crosstab([df1['week'], df1['player']], df1['value'])

或者使用DataFrame.pivot_table :

df = df1.pivot_table(index=['week', 'player'], columns='value', fill_value=0, aggfunc='size')

或按 GroupBy.size 汇总计数并通过 Series.unstack reshape :

df = df1.groupby(['week', 'player', 'value']).size().unstack(fill_value=0)

print (df)
value False True
week player
1 player_a 1 2
player_b 2 1
2 player_a 2 1
player_b 2 1

解决方案 DataFrame.stack , SeriesGroupBy.value_countsunstack:

df = df.set_index('week').stack().groupby(level=[0,1]).value_counts().unstack(fill_value=0)
print (df)
False True
week
1 player_a 1 2
player_b 2 1
2 player_a 2 1
player_b 2 1

关于python - 用于计算 2 列值的 Pandas groupby/pivot 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com