Python 为数据框中缺少的行添加未来日期
如何用数据框中的下一个日期来估算错过的日期Python 为数据框中缺少的行添加未来日期,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,如何用数据框中的下一个日期来估算错过的日期 wtg_at1.tail(10) 环境温度 日期 818 31.237499 2020-03-28 819 32.865974 2020-03-29 820 32.032558 2020-03-30 821 31.671166 楠 822 31.389927 楠 823 31.243660 楠 824 31.206777 楠 825 31.241503 楠 826 31.309531 楠 827 31.382531 楠 如果只有一组缺失值,则可以向前
wtg_at1.tail(10)
环境温度
日期
818
31.237499
2020-03-28
819
32.865974
2020-03-29
820
32.032558
2020-03-30
821
31.671166
楠
822
31.389927
楠
823
31.243660
楠
824
31.206777
楠
825
31.241503
楠
826
31.309531
楠
827
31.382531
楠
如果只有一组缺失值,则可以向前填充它们,并通过转换为天时间增量的累积和添加计数器:
df['Date'] = pd.to_datetime(df['Date'])
df['Date'] = df['Date'].ffill() + pd.to_timedelta(df['Date'].isna().cumsum(), unit='d')
print (df)
AmbientTemperatue Date
818 31.237499 2020-03-28
819 32.865974 2020-03-29
820 32.032558 2020-03-30
821 31.671166 2020-03-31
822 31.389927 2020-04-01
823 31.243660 2020-04-02
824 31.206777 2020-04-03
825 31.241503 2020-04-04
826 31.309531 2020-04-05
827 31.382531 2020-04-06
另一个可能的想法是通过最小日期时间和数据帧的长度重新分配值:
df['Date'] = pd.date_range(df['Date'].min(), periods=len(df))
如果有多个组缺少值:
print (df)
AmbientTemperatue Date
818 31.237499 2020-03-28
819 32.865974 2020-03-29
820 32.032558 2020-03-30
821 31.671166 NaN
822 31.389927 NaN
823 31.243660 NaN
824 31.206777 2020-05-08
825 31.241503 NaN
826 31.309531 NaN
827 31.382531 NaN
df['Date'] = pd.to_datetime(df['Date'])
m = df['Date'].notna()
s = (~m).groupby(m.cumsum()).cumsum()
df['Date'] = df['Date'].ffill() + pd.to_timedelta(s, unit='d')
print (df)
AmbientTemperatue Date
818 31.237499 2020-03-28
819 32.865974 2020-03-29
820 32.032558 2020-03-30
821 31.671166 2020-03-31
822 31.389927 2020-04-01
823 31.243660 2020-04-02
824 31.206777 2020-05-08
825 31.241503 2020-05-09
826 31.309531 2020-05-10
827 31.382531 2020-05-11