我有一个像这样的数据框:
table
我想创建一个新列(RS_target),该列将具有下一年的RS值(即索引1:Year = 1962,RS = 599,RS_target = 747)。目的是获得该团队明年的RS,并将该值放在新列“ RS_target”中。
我一直在尝试结合使用条件和apply(),但是在获取所需输出时遇到了麻烦。寻找一种有效的替代方法或任何其他方式来获得期望的结果。谢谢!
答案 0 :(得分:2)
您需要先在dataframe.groupby()
列上应用Team
,然后使用shift()
获取团队的下一个RS值。
df = pd.DataFrame({'Year':[1962,1962,1963,1963,1964,1964], 'RS':[599,774,747,725,702,800], 'Team':['WSA','STL','WSA','STL','WSA','STL']})
df['RS_Target'] = df.groupby('Team')['RS'].shift(-1)
print(df)
Output:
Year RS Team RS_Target
0 1962 599 WSA 747.0
1 1962 774 STL 725.0
2 1963 747 WSA 702.0
3 1963 725 STL 800.0
4 1964 702 WSA NaN
5 1964 800 STL NaN
编辑:
如果“年份”列包含随机值b。在应用groupby
操作之前,使用下面的方法对列进行排序:
df.sort_values(['Year'], inplace=True)