填充pandas数据框中的缺失值

1 投票
1 回答
1394 浏览
提问于 2025-04-18 00:54

我想在我的pandas数据框中填补缺失的值。理想情况下,我希望minute这一列在每个小时内的范围是0到60。不过,很不幸的是,生成这些数据的过程中没有记录sub_count = 0的行。有没有办法做到这一点呢?我的数据涵盖了2014-03-312014-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

撰写回答