我有一个 df 由停电组成,有几列,一个开始日期列和一个结束日期列我希望能够做什么:扫描“开始日期”列以获取最早日期扫描“完成日期”列以获取最新日期建立一个日期索引,所有日期都在这两个日期之间对于每一行,为从开始日期到完成日期的每个日期创建一行,从而消除了对两个日期列的需要所以如果我的 df 看起来如下:start date mw outage end date location01/01/2000 1000 01/04/2000 merica01/01/2000 2000 01/03/2000 canadia我希望它看起来像这样date mw outage location01/01/2000 1000 merica01/01/2000 2000 canadia01/02/2000 1000 merica01/02/2000 2000 canadia01/03/2000 1000 merica01/03/2000 2000 canadia01/04/2000 1000 merica我想我可以使用重新索引来添加缺失的日期,但我不确定如何识别最旧/最新的,我不知道如何以这种方式创建行
1 回答

森栏
TA贡献1810条经验 获得超5个赞
然后我们需要创建范围日期列explode
df.startdate=pd.to_datetime(df.startdate)
df.enddate=pd.to_datetime(df.enddate)
df['date']=[pd.date_range(x, y ) for x , y in zip(df.startdate, df.enddate)]
df=df.explode('date')
Out[169]:
startdate mwoutage enddate location date
0 2000-01-01 1000 2000-01-04 merica 2000-01-01
0 2000-01-01 1000 2000-01-04 merica 2000-01-02
0 2000-01-01 1000 2000-01-04 merica 2000-01-03
0 2000-01-01 1000 2000-01-04 merica 2000-01-04
1 2000-01-01 2000 2000-01-03 canadia 2000-01-01
1 2000-01-01 2000 2000-01-03 canadia 2000-01-02
1 2000-01-01 2000 2000-01-03 canadia 2000-01-03
添加回答
举报
0/150
提交
取消