【发布时间】:2021-06-22 05:28:46
【问题描述】:
我正在尝试使用 groupby 获得累积和,其中累积和应用于包含相同值的多个列
import pandas as pd
import numpy as np
df = pd.DataFrame([['Jazz', 'Clippers', 89, 100],
['Clippers' , 'Jazz', 101, 97],
['Bucks' , 'Jazz', 99, 112],
['Jazz' , 'Bucks', 109, 88]],
columns=['home_team', 'away_team', 'home_points', 'away_points'])
print(df)
这将产生一个输出为
的数据框 home_team away_team home_points away_points
0 Jazz Clippers 89 100
1 Clippers Jazz 101 97
2 Bucks Jazz 99 112
3 Jazz Bucks 109 88
我想要做的是获得主客队的累积总分,这将解释每支球队都出现在主客场列中的事实,但我所能弄清楚的是累积的按球队名称分组的总和,将每支球队的总和作为主场或客场,就像这样
df["home_cumulative_points"]= df.groupby(["home_team"])["home_points"].cumsum()
df["away_cumulative_points"]= df.groupby(["away_team"])["away_points"].cumsum()
print(df)
产生
home_team away_team home_points away_points home_cumulative_points away_cumulative_points
0 Jazz Clippers 89 100 89 100
1 Clippers Jazz 101 97 101 97
2 Bucks Jazz 99 112 99 209
3 Jazz Bucks 109 88 198 88
我有什么方法可以通过 groupby 来计算在主客场列中存在同一支球队的累积总和,以使运行总和添加球队积分,无论他们是主场还是客场?所以最后一行的理想输出是
home_team away_team home_points away_points home_cumulative_points away_cumulative_points
3 Jazz Bucks 109 88 407 187
我猜我可能需要做一个 for 循环之类的,但我只是不确定如何最好地去做。提前感谢您的任何反馈!
【问题讨论】:
标签: python pandas dataframe pandas-groupby cumsum