我有一个带有日期列的pandas数据帧,我想在数据帧中添加一个带有前一个日期索引的新列。怎么做到这一点? 样本df:
index Date
0 2015-10-03
1 2015-11-03
2 2015-11-30
3 2015-11-30
4 2015-12-03
期望的输出:
index Date previous_day
0 2015-10-03 0
1 2015-11-03 0
2 2015-11-30 1
3 2015-11-30 1
4 2015-12-03 3
谢谢,
答案 0 :(得分:1)
我认为您需要将index
列的duplicated
值Date
替换为NaN
,然后转发填写这些值。还需要将索引的第一个值重命名为1
,最后减去1
:
注意:解决方案仅在唯一单调索引(0,1,2,...
)
#see notice above
df.reset_index(drop = True, inplace = True)
df['prev'] = df.rename(index={0:1})
.index.to_series()
.where(~df['Date'].duplicated()).ffill()
.astype(int)
.sub(1).values
print (df)
Date prev
index
0 2015-10-03 0
1 2015-11-03 0
2 2015-11-30 1
3 2015-11-30 1
4 2015-12-03 3