使用某些条件创建新列

时间:2018-07-31 04:43:46

标签: python pandas numpy

我有一个像这样的数据框:

table

我想创建一个新列(RS_target),该列将具有下一年的RS值(即索引1:Year = 1962,RS = 599,RS_target = 747)。目的是获得该团队明年的RS,并将该值放在新列“ RS_target”中。

我一直在尝试结合使用条件和apply(),但是在获取所需输出时遇到了麻烦。寻找一种有效的替代方法或任何其他方式来获得期望的结果。谢谢!

1 个答案:

答案 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)