我有一个数据框,其中的列对应于自 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
您可以使用
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