Pandas实现DataFrame第二列下移一行并删除首行
解决方案:Pandas实现列下移+删除首行
没问题,这事儿用Pandas几步就能搞定,刚好我之前处理过类似的时序数据对齐需求,直接给你实操代码和解释:
步骤1:构造原始DataFrame(如果你的数据已经存在,这步可以跳过)
先把你提供的原始数据转换成可操作的DataFrame:
import pandas as pd # 对应你给出的原始数据 df1 = pd.DataFrame({ 'year': [2017, 2018, 2019, 2020, 2021], 'ER12': [-2.05, 1.05, -0.04, -0.60, -99.99] })
步骤2:将第二列(ER12)下移一行
用Pandas的shift()方法,参数1表示向下移动一行,移动后第一行的ER12会变成NaN,后续行依次承接上一行的数值:
# 对ER12列执行下移操作 df1['ER12'] = df1['ER12'].shift(1)
步骤3:删除首行并重置索引
这一步直接删掉包含NaN的首行,同时重置索引让结果和你期望的格式一致:
# 删除首行,并用reset_index重置索引(drop=True避免保留旧索引列) df_final = df1.drop(index=0).reset_index(drop=True)
最终输出结果
运行后打印df_final会得到你想要的结果:
year ER12 0 2018 -2.05 1 2019 1.05 2 2020 -0.04 3 2021 -0.60
可选的简洁写法
如果想一步到位,也可以把下移和删行合并成一行(不过分开写更清晰):
df_final = df1.assign(ER12=df1['ER12'].shift(1)).iloc[1:].reset_index(drop=True)
内容的提问来源于stack exchange,提问作者user2100039
相关产品推荐
相关产品推荐

