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

Pandas 如何将小时列中的数字转换为实际小时数,pandas,Pandas,我在熊猫数据框中有一个“小时”列,它只是一个从0到23表示小时的数字列表。当数字为一位数(如1)和两位数(如18)时,如何将它们转换为小时格式(如01:00)?单个数字需要有一个前导零、一个冒号和两个尾随零。两位数只需要一个冒号和两个尾随的零。如何在数据帧中实现这一点?此外,我还有一个“日期”列,需要在转换小时列后与小时列合并 e.g. date hour 2018-07-01 0 2018-07-01

我在熊猫数据框中有一个“小时”列,它只是一个从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的新手,考虑到一位数和两位数的数字,我在他们的文档中找不到如何做到这一点。

将小时转换为时间增量,并在必要时添加到datetimes转换为:

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
列使用

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