如何将日期和小时列合并到熊猫系列中的一个索引列中?

时间:2014-06-09 21:43:20

标签: python datetime pandas series multi-index

我有一个熊猫系列,如下所示:

df.head()
Country  Day         Hour
DE       2013-01-01  1       36504
                     2       35142
                     3       33723
                     4       32375
                     5       31876
dtype: float64

'Country', 'Day', 'Hour' 

作为DateTime格式的索引列(MultiIndex)和'Day'。实际值(负载)位于未标记的列中。

我现在想将'Day'和'Hour'列合并到一个'Date'索引列中。我做了很多搜索,到目前为止我只看到了基于pd.read_csv和pd.read_table的解决方案。但是,由于这是一个系列(不是dataframe / csv / excel),这些解决方案似乎不适用。

2 个答案:

答案 0 :(得分:2)

df["Day"] + pd.to_timedelta(df["Hour"])

应该有用。

答案 1 :(得分:1)

您可以添加它们(如果您首先将小时数乘以纳秒数),但您必须下拉到numpy才能进行计算*:

In [11]: dr = pd.date_range('2014', periods=5)

In [12]: hours = pd.Index(np.arange(5))

In [13]: pd.DatetimeIndex(dr.values + hours.values * pd.offsets.Hour(1).nanos)
Out[13]:
<class 'pandas.tseries.index.DatetimeIndex'>
[2014-01-01 00:00:00, ..., 2014-01-05 04:00:00]
Length: 5, Freq: None, Timezone: None

注意:MultiIndex中的每个级别都是一个索引,但这对于Series或np.array也是如此。

*显然索引会覆盖+运算符以使其追加...

使用get_level_values访问MultiIndex的级别,请参阅another question