我正在使用代码来移动看起来有点类似于此的时间序列数据:
Year Player PTSN AVGN
2018 Aaron Donald 280.60 17.538
2018 J.J. Watt 259.80 16.238
2018 Danielle Hunter 237.60 14.850
2017 Aaron Donald 181.0 12.929
2016 Danielle Hunter 204.6 12.788
目的是让它变成这样:
AVGN PTSN AVGN_prev PTSN_prev
Player Year
Aaron Donald 2016 NaN NaN NaN NaN
2017 12.929 181.0 NaN NaN
2018 17.538 280.6 12.929 181.0
Danielle Hunter 2016 12.788 204.6 NaN NaN
2017 8.325 133.2 12.788 204.6
2018 14.850 237.6 8.325 133.2
J.J. Watt 2016 NaN NaN NaN NaN
2017 NaN NaN NaN NaN
2018 16.238 259.8 NaN NaN
我正在使用此代码来实现这一目标:
res = df.set_index(['player', 'Year'])
idx = pd.MultiIndex.from_product([df['player'].unique(),
df['Year'].unique()],
names=['Player', 'Year'])
res = res.groupby(['player', 'Year']).apply(sum)
res = res.reindex(idx).sort_index()
res[columns] = res.groupby('Player')[list(res.columns)].shift(1)
添加 groupby.sum() 因为数据框中的一些球员在同一赛季从一支球队转移到另一支球队,我想合并这些数字。但是,我拥有的数据实际上非常错误。数据有太多列要发布,但似乎是将前一年 (_prev) 的数据放入随机列中。它不会改变,并且总是将它放在相同的错误列中。这是由 groupby.sum() 引起的问题吗?是不是因为我使用了一个列变量(包含与 res.columns 相同的名称,并附加了一个 str(_prev))和一个列表(res.columns)?不管是哪一种,我该如何解决这个问题?
慕标琳琳
相关分类