[英]How to fill missing terms with a value exactly 24 intervals ago in pandas
使用简单的数据集:
df
a
0 1.0
1 3.0
2 5.0
3 7.0
4 7.0
5 NaN
6 3.0
7 24.0
我们想用以前的值填充np.nan
:
df.a.fillna(df.a.shift(3))
0 1.0
1 3.0
2 5.0
3 7.0
4 7.0
5 5.0
6 3.0
7 24.0
Name: a, dtype: float64
在您的情况下:
df['Solar Power'].fillna(df['Solar Power'].shift(24))
我认为您需要通过shift
ed值shift
24H
创建由to_datetime
和to_timedelta
为fillna
创建的DatetimeIndex
:
print (df)
Date Time System Power Solar Power
0 6/15/2016 0:00:00 1.0 10.0
1 6/15/2016 0:00:01 2.0 20.0
2 6/15/2016 0:00:02 3.0 30.0
3 6/15/2016 0:00:03 4.0 40.0
4 6/15/2016 0:00:04 5.0 50.0
5 6/15/2016 0:00:05 6.0 60.0
6 6/15/2016 0:00:06 7.0 70.0
7 6/15/2016 0:00:07 8.0 80.0
8 6/15/2016 0:00:08 9.0 90.0
9 6/15/2016 0:00:09 10.0 100.0
10 6/15/2016 0:00:10 11.0 110.0
11 6/16/2016 0:00:04 NaN NaN
12 6/16/2016 0:00:06 NaN NaN
df.index = pd.to_datetime(df['Date']) + pd.to_timedelta(df['Time'].astype(str))
cols = ['System Power','Solar Power']
df[cols] = df[cols].fillna(df[cols].shift(24, freq='H'))
df = df.reset_index(drop=True)
print (df)
Date Time System Power Solar Power
0 6/15/2016 0:00:00 1.0 10.0
1 6/15/2016 0:00:01 2.0 20.0
2 6/15/2016 0:00:02 3.0 30.0
3 6/15/2016 0:00:03 4.0 40.0
4 6/15/2016 0:00:04 5.0 50.0
5 6/15/2016 0:00:05 6.0 60.0
6 6/15/2016 0:00:06 7.0 70.0
7 6/15/2016 0:00:07 8.0 80.0
8 6/15/2016 0:00:08 9.0 90.0
9 6/15/2016 0:00:09 10.0 100.0
10 6/15/2016 0:00:10 11.0 110.0
11 6/16/2016 0:00:04 5.0 50.0
12 6/16/2016 0:00:06 7.0 70.0
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.