我在 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
将小时转换为时间增量并添加到由 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
如果需要还删除小时
列,请使用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/