gpt4 book ai didi

python - 将多列转换为没有 Pandas 日期的日期时间

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:18 25 4
gpt4 key购买 nike

我有一个包含 3 列的数据框,一列代表小时,一列代表分钟,一列代表秒,如下所示:

df = pd.DataFrame({'hour': [9.0, 9.0, 9.0, 10.0],
'min': [12.0, 13.0, 55.0, 2.0],
'sec': [42.0, 30.0, 12.0, 5.0]})

>>> df
hour min sec
0 9.0 12.0 42.0
1 9.0 13.0 30.0
2 9.0 55.0 12.0
3 10.0 2.0 5.0

我正在尝试将这三列组合成一个由日期时间系列组成的新列。目标是拥有这个数据框:

   hour   min   sec      time
0 9.0 12.0 42.0 9:12:42
1 9.0 13.0 30.0 9:13:30
2 9.0 55.0 12.0 9:55:12
3 10.0 2.0 5.0 10:02:05

到目前为止,我正在尝试使用 pd.to_datetime,如下所示:

df['time'] = pd.to_datetime(df[['hour', 'min', 'sec']],
format = '%H:%M:S')

但我收到以下 ValueError:ValueError:组装映射需要至少指定 [year, month, day]:缺少 [day,month,year]

我试图通过仅包含时分秒的 format 参数来避免这种情况,但显然这不起作用。

有人问了类似的问题here ,但建议的解决方案在这种情况下似乎不起作用,我仍然收到此 ValueError

任何解决此问题的想法将不胜感激!

谢谢!

[编辑]:我还需要能够处理 NaN 的方法,所以像这样的数据框:

df = pd.DataFrame({'hour': [9.0, 9.0, 9.0, 10.0, np.nan],
'min': [12.0, 13.0, 55.0, 2.0, np.nan],
'sec': [42.0, 30.0, 12.0, 5.0, np.nan]})

@PiRSquared 提出的解决方案有效

最佳答案

不确定是否有更直接的方法,但这可行

df['time'] = pd.to_datetime(df['hour'].astype(int).astype(str)+':'+df['min'].astype(int).astype(str)+':'+df['sec'].astype(int).astype(str), format = '%H:%M:%S').dt.time


hour min sec time
0 9.0 12.0 42.0 09:12:42
1 9.0 13.0 30.0 09:13:30
2 9.0 55.0 12.0 09:55:12
3 10.0 2.0 5.0 10:02:05

关于python - 将多列转换为没有 Pandas 日期的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48176824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com