繁体   English   中英

如何在熊猫中以24个间隔准确地填充缺失术语

[英]How to fill missing terms with a value exactly 24 intervals ago in pandas

嗨,我有一个小时分辨率的全年来自太阳辐射传感器的数据。 某些小时的数据丢失,需要在24小时之前准确地填充值。 由于第二天的同一时间太阳辐射几乎相同。

数据的示例图片是

在此处输入图片说明

缺少的数据如下图所示 在此处输入图片说明

我学习的用于填充的代码建议如下所示

import pandas as pd

df =pd.read_excel('ffill_test.xlsx')
df['Solar Power'].fillna(method='ffill', inplace= True)

print(df)

如何获取间隔为24个值的间隔填充。 我在想的另一个选择是将其转换为列表,然后使用循环替换它。

谢谢。

使用简单的数据集:

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_datetimeto_timedeltafillna创建的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM