使用特定条件创建新列

2024-04-27 18:29:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧:

   Year   RS   Team  RS_target
1  1962   599  WSA
2  1962   774  STL
3  1963   747  WSA
4  1963   725  STL
5  1964   702  WSA
6  1964   800  STL

我想创建一个新列(RS\u target),它将具有下一年的RS值(即索引1:year=1962,RS=599,RS\u target=747)。我们的目标是获得球队明年的RS,并将该值放在新的“RS\ U目标”一栏中

我一直在尝试条件和apply()的组合,但是很难得到想要的输出。寻找一个有效的替代方法,或任何其他方式来获得预期的结果。谢谢


Tags: 数据方法target目标方式条件yearteam
1条回答
网友
1楼 · 发布于 2024-04-27 18:29:08

您需要首先在Team列上应用dataframe.groupby(),然后使用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)

相关问题 更多 >