填充pandas数据框中的缺失值
我想在我的pandas数据框中填补缺失的值。理想情况下,我希望minute
这一列在每个小时内的范围是0到60。不过,很不幸的是,生成这些数据的过程中没有记录sub_count = 0
的行。有没有办法做到这一点呢?我的数据涵盖了2014-03-31
和2014-04-01
这两个日期。
df =
sub_count date hour minute
0 1 2014-03-31 0 0
1 1 2014-03-31 0 4
2 1 2014-03-31 0 5
3 1 2014-03-31 0 6
4 2 2014-03-31 0 7
...
1 个回答
3
构建一个日期时间索引(你可以在读取数据的时候做到这一点,这取决于数据是怎么存储的):
df = df.set_index(pd.to_datetime(df.date + 'T' +
df.hour.astype(str) + ':' +
df.minute.astype(str))
In [23]: df = df['sub_count']
In [24]: df
Out[24]:
2014-03-31 00:00:00 1
2014-03-31 00:04:00 1
2014-03-31 00:05:00 1
2014-03-31 00:06:00 1
2014-03-31 00:07:00 2
Name: sub_count, dtype: int64
然后进行重采样:
In [26]: df.resample('T')
Out[26]:
2014-03-31 00:00:00 1
2014-03-31 00:01:00 NaN
2014-03-31 00:02:00 NaN
2014-03-31 00:03:00 NaN
2014-03-31 00:04:00 1
2014-03-31 00:05:00 1
2014-03-31 00:06:00 1
2014-03-31 00:07:00 2
Freq: T, Name: sub_count, dtype: float64