我尝试使用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循环或其他什么,但我不确定如何最好地去做。提前感谢您的反馈
想法是只选择必要的列,用} 重塑,这样就可以对两个列同时使用
_
分割MultiIndex
,用^{cumsum
:或:
另一种方法是使用^{} 和
rename
进行重塑:相关问题 更多 >
编程相关推荐