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

Posted

技术标签:

【中文标题】如何将日期和小时列合并到熊猫系列中的一个索引列中?【英文标题】:How to combine dates and hours column into one index column in a pandas series? 【发布时间】:2014-07-30 13:00:00 【问题描述】:

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

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 的解决方案。但是,由于这是一个系列(不是数据框/csv/excel),这些解决方案似乎并不适用。

【问题讨论】:

【参考方案1】:
df["Day"] + pd.to_timedelta(df["Hour"])

应该可以。

【讨论】:

【参考方案2】:

您可以添加它们(如果您首先将小时乘以纳秒数),但您必须下拉到 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 相同。

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

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

【讨论】:

以上是关于如何将日期和小时列合并到熊猫系列中的一个索引列中?的主要内容,如果未能解决你的问题,请参考以下文章

从熊猫的日期时间列中提取日期和小时[重复]

时间序列重采样错误 - 熊猫列中没有日期索引

如何在 C# 中使用 csvHelper 将两个单独列中的日期和时间合并到一个新的日期时间列中

熊猫:从日期时间索引合并日期和小时

如何将日期,年,月的不同列合并/合并到单个列中

合并具有不同索引的熊猫系列(对齐一个索引)