如何将分层日期和时间索引合并到Pandas中的单个日期时间索引中?

时间:2014-11-27 02:00:31

标签: python datetime pandas

假设我有以下数据框:

                     temp
2014-11-20 12:45:00        51
2014-11-20 12:46:00        43
2014-11-20 12:47:00        44
2014-11-21 12:45:00        44
2014-11-21 12:46:00        46
2014-11-21 12:47:00        48
2014-11-22 12:45:00        38
2014-11-22 12:46:00        32
2014-11-22 12:47:00        37

如果您复制上述内容并使用pd.read_clipboard()我相信您应该获得分层索引(或MultiIndex)

第一个索引是日期,第二个索引是字符串的时间。如何将两个索引合并为一个日期时间索引?

(请注意,这不是关于使用pd.read_csv() parse_dates选项,因为数据帧不是来自csv文件,问题是如何使用现有数据帧。)

1 个答案:

答案 0 :(得分:2)

您可以使用to_datetime方法将字符串解析为日期时间值。要使用它,我认为最简单的方法是首先连接导致单级字符串索引的日期和时间字符串:

In [184]: s
Out[184]:
                     temp
2014-11-20 12:45:00    51
           12:46:00    43
           12:47:00    44
2014-11-21 12:45:00    44
           12:46:00    46
           12:47:00    48
2014-11-22 12:45:00    38
           12:46:00    32
           12:47:00    37

In [187]: s.index = s.index.get_level_values(0).values + ' ' + s.index.get_level_values(1)

In [188]: s.index
Out[188]: Index([u'2014-11-20 12:45:00', u'2014-11-20 12:46:00', ... u'2014-11-22 12:47:00'], dtype='object')

然后您可以使用to_datetime将字符串转换为DatetimeIndex:

In [189]: s.index = pd.to_datetime(s.index)

In [190]: s.index
Out[190]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-11-20 12:45:00, ..., 2014-11-22 12:47:00]
Length: 9, Freq: None, Timezone: None