【问题标题】:Adding a datetime column in pandas dataframe from minute values从分钟值在熊猫数据框中添加日期时间列
【发布时间】:2021-07-01 21:21:51
【问题描述】:

我有一个数据框,其中有 time 列的分钟数来自 0-1339 ,这意味着一天中有 1440 分钟。我想添加一列datetime 代表当天2021-3-21 包括hh amd mm 像这样1980-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
...

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

【问题讨论】:

  • 你用了什么导入?试试from datetime import datetime
  • 我不清楚数据框列的样子。你说这是一个数字0-1339,但你尝试通过pd.to_datetime(df['time'],format='%H:%M:%S:%f') 解析它,格式字符串不起作用。可以附上df 的样本吗?
  • 我试过了。但它不起作用。同样的错误。我编辑了提到导入的问题。
  • @Henry 编辑了问题

标签: python pandas datetime strptime


【解决方案1】:

让我们尝试使用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)

【讨论】:

    猜你喜欢
    • 2023-03-20
    • 1970-01-01
    • 2017-08-09
    • 2022-01-07
    • 1970-01-01
    • 2021-07-25
    • 2021-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多