如何从 Pandas 中的整数日期和时间列创建日期时间索引

问题描述 投票:0回答:1

我有一个数据框,其中的列对应于自 1900 年 1 月 1 日以来的天数 (

date
) 和作为 24 小时的一部分的秒数 (
time
)。

    date    time
0   40603   34222
1   40603   34223
2   40603   34224
3   40603   34225
4   40603   34226
5   40603   34227
6   40603   34228
7   40603   34229

从中创建更标准的日期时间索引以用于为数据帧创建索引的最简单方法是什么(最终目标是使用索引对数据帧重新采样)。

所需的输出看起来像这样:

    date    time    idx
0   40603   34222   2011-03-03 09:30:02
1   40603   34223   2011-03-03 09:30:03
2   40603   34224   2011-03-03 09:30:04
3   40603   34225   2011-03-03 09:30:05
4   40603   34226   2011-03-03 09:30:06
5   40603   34227   2011-03-03 09:30:07
6   40603   34228   2011-03-03 09:30:08
7   40603   34229   2011-03-03 09:30:09

已经尝试过通过

timedelta
添加自 1900 年以来的天数的版本,但感觉比我的输入应该要复杂得多(尽管也许这只是一般情况下在 Python 中处理日期)。

最近的尝试:

df['ref_date'] = datetime.date(1900, 1, 1) + datetime.timedelta(df.date) + datetime.timedelta(seconds=df.time)

退货

TypeError: unsupported type for timedelta seconds component: Series

python pandas dataframe datetime
1个回答
2
投票

您可以使用

Timestamp
to_timedelta
:

import pandas as pd

df = pd.DataFrame({'date':[40603] * 8, 'time':range(34222, 34230)})
df['idx'] = pd.Timestamp(1900, 1, 1) + pd.to_timedelta(df.date, unit='d') + pd.to_timedelta(df.time, unit='s')
print(df)

输出:

    date   time                 idx
0  40603  34222 2011-03-03 09:30:22
1  40603  34223 2011-03-03 09:30:23
2  40603  34224 2011-03-03 09:30:24
3  40603  34225 2011-03-03 09:30:25
4  40603  34226 2011-03-03 09:30:26
5  40603  34227 2011-03-03 09:30:27
6  40603  34228 2011-03-03 09:30:28
7  40603  34229 2011-03-03 09:30:29
© www.soinside.com 2019 - 2024. All rights reserved.