Pandas 序列扩展并填充随机平均值

Pandas Series expand with filling random mean values

我正在尝试收集一年中每个小时的温度。经过一些废弃后,我几乎所有的临时值都按小时计算,但不幸的是,一些数据丢失了,临时总数量只有 8600,而不是 2016 年的 8783 小时。不幸的是,我不知道临时数据从哪个特定时间丢失。所以我必须完成临时数据,直到我拥有 2016 年小时数的所有对应值。有没有一种方法可以随机插入与我拥有的原始值接近的值来完成临时系列。

当我使用 pd.concat() 时,由于 temp(8600) 中的行较少,直到 8783 个索引(在临时列中)的所有行都被 NaN 填充。

df = pd.concat([date_df, temp_df], axis =1)
Output:

datetime                  |     temp
0 2016-01-01 01:00:00           -6°C
1 2016-01-01 02:00:00           -6°C
2 2016-01-01 03:00:00           -6°C
3 2016-01-01 04:00:00           -7°C

.....

8780 2016-12-31 22:00:00        NaN
8781 2016-12-31 23:00:00        NaN
8782 2017-01-01 00:00:00        NaN

所以我可以在随机索引上添加缺失的临时值,并且它们的值与现有值最接近。提前致谢,愿原力与你同在!

您可以使用:

print (df)
            datetime    temp
2016-01-01  01:00:00   8.0°C
2016-01-01  02:00:00   7.0°C
2016-01-01  03:00:00     NaN
2016-01-01  04:00:00     NaN
2016-01-01  05:00:00   4.0°C
2016-01-01  06:00:00  10.0°C

df['temp'] = df['temp'].str.replace('°C', '').astype(float)

df['temp'] = df['temp'].interpolate().astype(str) + '°C'
print (df)
            datetime    temp
2016-01-01  01:00:00   8.0°C
2016-01-01  02:00:00   7.0°C
2016-01-01  03:00:00   6.0°C
2016-01-01  04:00:00   5.0°C
2016-01-01  05:00:00   4.0°C
2016-01-01  06:00:00  10.0°C

编辑:

#sample data
np.random.seed(54)
rng = pd.date_range('2016-01-01', freq='H', periods=100)
df = pd.DataFrame({'temp':np.random.randint(10, size=len(rng))}, index=rng)

#add 10 random NaNs
df.loc[np.random.choice(df.index, 10), 'temp'] = np.nan
print (df)
                     temp
2016-01-01 00:00:00   5.0
2016-01-01 01:00:00   2.0
2016-01-01 02:00:00   7.0
2016-01-01 03:00:00   1.0
2016-01-01 04:00:00   0.0
2016-01-01 05:00:00   NaN
2016-01-01 06:00:00   7.0
2016-01-01 07:00:00   1.0
2016-01-01 08:00:00   9.0
...
...