熊猫根据过去2天的现有日期值添加行

时间:2020-08-03 14:39:59

标签: python pandas

我有一个熊猫数据框:

Name     Date
Bob      2020-05-17
Alice    2020-04-01

下面是预期的结果:对于每个“名称”组,我想保留原始行,并在Date中保留过去2天的值的另外2行

Name     Date
Bob      2020-05-17
Bob      2020-05-16
Bob      2020-05-15
Alice    2020-04-01
Alice    2020-03-31
Alice    2020-03-30

谢谢!

1 个答案:

答案 0 :(得分:1)

在列表理解中使用pd.date_range来内联assign的日期,然后DataFrame.explode

df = (df.assign(Date=[pd.date_range(end=e, periods=3, freq='D')
                for e in df['Date']])
      .explode('Date'))

[出]

    Name         Date
0    Bob   2020-05-15
0    Bob   2020-05-16
0    Bob   2020-05-17
1  Alice   2020-03-30
1  Alice   2020-03-31
1  Alice   2020-04-01

如果日期排序很重要,则可能需要链接其他sort_values方法,然后是sort_index

(df.assign(Date=[pd.date_range(end=e, periods=3, freq='D')
                for e in df['Date']])
      .explode('Date')
      .sort_values(['Date'], ascending=False)
      .sort_index())