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

在 Pandas DataFrame 中抓取前一年的数据

在 Pandas DataFrame 中抓取前一年的数据

ABOUTYOU 2023-05-23 15:59:42
我有这个 df:d={'year':[2019,2018,2017],'B':[10,5,17]}df=pd.DataFrame(data=d)print(df):   year   B0  2019  101  2018   52  2017  17我想创建一个列“B_previous_year”,从前一年获取 B 数据,其方式如下所示:   year   B   B_previous_year0  2019  10                 51  2018   5                172  2017  17               NaN我正在尝试这个:df['B_previous_year']=df.B.loc[df.year == (df.year - 1)]然而我B_previous_year已经满了NaN   year   B  B_previous_year0  2019  10              NaN1  2018   5              NaN2  2017  17              NaN我怎么能那样做?
查看完整描述

2 回答

?
猛跑小猪

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

如果您想保留整数格式:


df = df.convert_dtypes()

df['New'] = df.B.shift(-1)

df

输出:


    year    B   New

0   2019    10  5

1   2018    5   17

2   2017    17  <NA>


查看完整回答
反对 回复 2023-05-23
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您可能想先按年份对数据框进行排序,然后验证一行与下一行的差异确实是一年:


df = df.sort_values(by='year')

df['B_previous_year'] = df[df.year.diff() == 1]['B']

    year    B   B_previous_year

2   2017    17  NaN     

1   2018    5   5.0     

0   2019    10  10.0    


查看完整回答
反对 回复 2023-05-23
  • 2 回答
  • 0 关注
  • 192 浏览
慕课专栏
更多

添加回答

举报

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