将分钟数添加到熊猫DatetimeIndex

时间:2018-12-01 10:03:06

标签: python-3.x pandas

我有一个包含日期的索引。

DatetimeIndex(['2004-01-02', '2004-01-05', '2004-01-06', '2004-01-07',
           '2004-01-08', '2004-01-09', '2004-01-12', '2004-01-13',
           '2004-01-14', '2004-01-15',
           ...
           '2015-12-17', '2015-12-18', '2015-12-21', '2015-12-22',
           '2015-12-23', '2015-12-24', '2015-12-28', '2015-12-29',
           '2015-12-30', '2015-12-31'],
          dtype='datetime64[ns]', length=3021, freq=None)

现在,我想每天生成每天的每一分钟(24 * 60 = 1440分钟),并用所有天数和分钟作为索引。

结果应如下所示:

['2004-01-02 00:00:00', '2004-01-02 00:01:00', ..., '2004-01-02 23:59:00',
 '2004-01-03 00:00:00', '2004-01-03 00:01:00', ..., '2004-01-03 23:59:00',
 ...
 '2015-12-31 00:00:00', '2015-12-31 00:01:00', ..., '2015-12-31 23:59:00']

有一个聪明的把戏吗?

1 个答案:

答案 0 :(得分:1)

您应该可以在此处使用.asfreq()

>>> import pandas as pd 
>>> days = pd.date_range(start='2018-01-01', days=10)
>>> df = pd.DataFrame(list(range(len(days))), index=days)
>>> df.asfreq('min')                                                                                                                                     
                       0
2018-01-01 00:00:00  0.0
2018-01-01 00:01:00  NaN
2018-01-01 00:02:00  NaN
2018-01-01 00:03:00  NaN
2018-01-01 00:04:00  NaN
2018-01-01 00:05:00  NaN
2018-01-01 00:06:00  NaN
# ...

>>> df.shape                                                                                                                                             
(10, 1)

>>> df.asfreq('min').shape                                                                                                                               
(12961, 1)

如果由于某些原因无法解决问题,您可能还想看看pd.MultiIndex.from_product();然后pd.to_datetime()处理连接结果。