大熊猫获得上一个日期的索引

时间:2017-06-08 08:03:36

标签: python pandas datetime dataframe

我有一个带有日期列的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
  1. 由于在索引1处没有前一天我想在前一天获得1。
  2. 由于索引2处的日期与索引3相同,因此我希望索引3的previous_day为1。
  3. 谢谢,

1 个答案:

答案 0 :(得分:1)

我认为您需要将index列的duplicatedDate替换为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