为了账号安全,请及时绑定邮箱和手机立即绑定

使用来自不同行的值在 DataFrame 中创建新列

使用来自不同行的值在 DataFrame 中创建新列

幕布斯6054654 2022-06-28 17:28:42
我正在尝试在 pandas 数据框中创建一个新列,该列是明年相同 ID 的分数。请参阅下面的示例原始数据:Year  ID    Score2018  785   8.4 2018  770   -1.22017  733   3.22017  785   7.92018  733   3.9如果没有下一年的数据,则应填写 NA。所以我正在寻找的输出是:Year  ID    Score col2018  785   8.4   NA2018  770   -1.2  NA2017  733   3.2   3.92017  785   7.9   8.42018  733   3.9   NA数据当前未排序。
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

如果您的数据对于所有 ID 都有连续年份(没有带有 的 ID 2016 2018),那么您可以执行以下操作:


 df['col'] = df.sort_values('Year').groupby('ID').Score.shift(-1)

输出:


   Year   ID  Score  col

0  2018  785    8.4  NaN

1  2018  770   -1.2  NaN

2  2017  733    3.2  3.9

3  2017  785    7.9  8.4

4  2018  733    3.9  NaN

如果不能保证年份是连续的,则进行合并:


df.merge(df.assign(Year=lambda x: x.Year - 1),

         on=['Year', 'ID'],

         suffixes = ['','_new'],

         how='left')

输出:


   Year   ID  Score  Score_new

0  2018  785    8.4        NaN

1  2018  770   -1.2        NaN

2  2017  733    3.2        3.9

3  2017  785    7.9        8.4

4  2018  733    3.9        NaN


查看完整回答
反对 回复 2022-06-28
  • 1 回答
  • 0 关注
  • 84 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信