gpt4 book ai didi

pandas - 如何将小时列中的数字转换为实际小时数

转载 作者:行者123 更新时间:2023-12-04 09:45:57 25 4
gpt4 key购买 nike

我在 Pandas 数据框中有一个“小时”列,它只是一个从 0 到 23 表示小时的数字列表。当数字是个位数(如 1 )和两位数(如 18)时,如何将它们转换为小时格式,例如 01:00?单个数字需要有一个前导零、一个冒号和两个尾随零。两位数只需要一个冒号和两个尾随零。这如何在数据框中完成?此外,我有一个“日期”列,需要在转换小时列后与小时列合并。

 e.g.    date           hour  
2018-07-01 0
2018-07-01 1
2018-07-01 3
...
2018-07-01 21
2018-07-01 22
2018-07-01 23

Needs to look like:
date
2018-07-01 01:00
...
2018-07-01 23:00

数据的来源是一个 .csv 文件。
感谢您的考虑。我是 Pandas 的新手,我在他们的文档中找不到考虑到一位和两位数的数字如何做到这一点。

最佳答案

通过 to_timedelta 将小时转换为 timedeltas并添加到由 to_datetime 转换的日期时间如有必要:

df['date'] = pd.to_datetime(df['date']) + pd.to_timedelta(df['hour'], unit='h')
print (df)
date hour
0 2018-07-01 00:00:00 0
1 2018-07-01 01:00:00 1
2 2018-07-01 03:00:00 3
3 2018-07-01 21:00:00 21
4 2018-07-01 22:00:00 22
5 2018-07-01 23:00:00 23

如果需要也删除 hour列使用 DataFrame.pop
df['date'] = pd.to_datetime(df['date']) + pd.to_timedelta(df.pop('hour'), unit='h')
print (df)
date
0 2018-07-01 00:00:00
1 2018-07-01 01:00:00
2 2018-07-01 03:00:00
3 2018-07-01 21:00:00
4 2018-07-01 22:00:00
5 2018-07-01 23:00:00

关于pandas - 如何将小时列中的数字转换为实际小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62111981/

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