[英]Filling in missing hours in a Pandas dataframe
Date_NZST Time_NZST Radiation_Amount_MJ/m2
5/08/2011 0:00 0
5/08/2011 1:00 0
5/08/2011 2:00 0
5/08/2011 3:00 0
5/08/2011 4:00 0
5/08/2011 5:00 0
5/08/2011 6:00 0
5/08/2011 7:00 0
5/08/2011 8:00 0
5/08/2011 9:00 0.37
5/08/2011 10:00 0.41
5/08/2011 11:00 1.34
5/08/2011 12:00 0.87
5/08/2011 14:00 1.69
5/08/2011 15:00 1.53
5/08/2011 16:00 1.14
5/08/2011 17:00 0.63
5/08/2011 18:00 0.08
5/08/2011 19:00 0
5/08/2011 20:00 0
5/08/2011 21:00 0
5/08/2011 22:00 0
5/08/2011 23:00 0
我有一个Excel电子表格,其中包含一年中每天的每小时太阳辐照度测量值。 它具有3列,即Date_NZST,Time_NZST和Radiation_Amount_MJ / m2。
我正在尝试寻找一种方法来自动查找所有丢失的小时数,为该丢失的小时数生成一行,并在Radiation_Amount_MJ / m2列中用-符号填充它。 例如,缺少13:00,因此我想在12:00和14:00之间的行中输入正确的日期,并在-Radiation_Amount_MJ / m2列中填入-。 所有的日期都存在,只剩下几个小时。
5/08/2011 11:00 1.34
5/08/2011 12:00 0.87
5/08/2011 13:00 -
5/08/2011 14:00 1.69
5/08/2011 15:00 1.53
我一直在Excel中进行此操作,但这是一个非常繁琐的过程,可能会丢失数百个要点。 我试图使用Python中的Pandas库来做到这一点,并且看到了这个线程( 在pandas数据框中填写丢失的小时数 ),我试图更改答案代码以适合我的数据,但是我对这一行感到非常困惑
df.groupby('area').\
apply(lambda x : x.set_index('Datetime').resample('H').mean().fillna(0)).\
reset_index()'
以及如何将其重新用于我的数据。 有人有想法么?
首先,我们创建一个datetime
索引,其中包含带有pd.to_datetime
的日期和时间。
然后我们使用resample
得到每小时的数据,并使用fillna
,以填补缺失的vallues用-
df.set_index(pd.to_datetime(df['Date_NZST'] + ' ' + df['Time_NZST']), inplace=True)
df = df.drop(columns=['Date_NZST', 'Time_NZST'])
df = df.resample('H').first().fillna('-')
产量
Radiation_Amount_MJ/m2
2011-05-08 00:00:00 0
2011-05-08 01:00:00 0
2011-05-08 02:00:00 0
2011-05-08 03:00:00 0
2011-05-08 04:00:00 0
2011-05-08 05:00:00 0
2011-05-08 06:00:00 0
2011-05-08 07:00:00 0
2011-05-08 08:00:00 0
2011-05-08 09:00:00 0.37
2011-05-08 10:00:00 0.41
2011-05-08 11:00:00 1.34
2011-05-08 12:00:00 0.87
2011-05-08 13:00:00 -
2011-05-08 14:00:00 1.69
2011-05-08 15:00:00 1.53
2011-05-08 16:00:00 1.14
2011-05-08 17:00:00 0.63
2011-05-08 18:00:00 0.08
2011-05-08 19:00:00 0
2011-05-08 20:00:00 0
2011-05-08 21:00:00 0
2011-05-08 22:00:00 0
2011-05-08 23:00:00 0
如果您希望日期时间不在索引中,请使用df.reset_index()
注意 ,通过在数字列中填充-
,可以将其转换为object
类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.