首页 > 解决方案 > 从分钟值在熊猫数据框中添加日期时间列

问题描述

我有一个数据框,其中的time列的0-1339 分钟数表示一天中的 1440 分钟。我想像这样添加一个datetime代表当天的列,2021-3-21包括 hh amd mm1980-03-01 11:00我尝试了以下代码

from datetime import datetime, timedelta
date = datetime.date(2021, 3, 21)
days = date - datetime.date(1900, 1, 1)
df['datetime'] = pd.to_datetime(df['time'],format='%H:%M:%S:%f') +  pd.to_timedelta(days, unit='d')

但是错误似乎descriptor 'date' requires a 'datetime.datetime' object but received a 'int' 有没有其他方法可以解决此问题或修复此代码?请帮助解决这个问题。

>>df
time
0
1
2
3
..
1339

我想将此分钟转换为特定格式1980-03-01 11:00,我将使用日期2021-3-21并将分钟转换为hhmm部分。数据框看起来像。

>df
datetime               time
2021-3-21 00:00         0
2021-3-21 00:01         1
2021-3-21 00:02         2
...

如何以这种方式格式化我的数据?

标签: pythonpandasdatetimestrptime

解决方案


让我们尝试使用pd.to_timedelta以分钟为单位的持续时间,time然后添加TimeStamp

df['datetime'] = (
        pd.Timestamp('2021-3-21') + pd.to_timedelta(df['time'], unit='m')
)

df.head()

      time            datetime
0        0 2021-03-21 00:00:00
1        1 2021-03-21 00:01:00
2        2 2021-03-21 00:02:00
3        3 2021-03-21 00:03:00
4        4 2021-03-21 00:04:00

带有示例数据的完整工作示例:

import numpy as np
import pandas as pd

df = pd.DataFrame({'time': np.arange(0, 1440)})

df['datetime'] = (
        pd.Timestamp('2021-3-21') + pd.to_timedelta(df['time'], unit='m')
)
print(df)

推荐阅读