我正在努力收集一年中每个小时的温度。在一些报废之后,我几乎所有的临时值都达到了几个小时但不幸的是,有些数据丢失了,总数只有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
因此,我可以在随机索引上添加缺少的临时值,并将它们的值与现有索引中的最接近的值相加。在此先感谢,也许力量与你同在!
答案 0 :(得分:1)
您可以使用:
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
...
...