Pandas将小时和分钟列合并为时间

3
我试图将小时列和分钟列合并为HH:MM格式。
我尝试使用以下方法:
time = pd.to_timedelta(df['HOUR'],unit='h') + pd.to_timedelta(df['MINUTE'],unit ='m') 
time = pd.to_datetime(report_time).dt.time

这个功能是可行的,但它显示出来的内容不够好。

FutureWarning: Passing timedelta64-dtype data is deprecated, will raise a TypeError in a future version   return func(*args, **kwargs)

而且它不够高效,因为我已经在大数据集上尝试了这段代码,它消耗了我的内存。

我想知道是否有另一种方法可以将小时列和分钟列转换为HH:MM格式

我的数据如下:

Hour   Minute 
 8       12
 9       30
 3       15

我的目标是这样的

08:12
09:30
03:15
1个回答

3
将两列转换为字符串,添加分隔符并使用 to_datetime 函数,并提供 format 参数:
time = (pd.to_datetime(df['Hour'].astype(str) + ':' + df['Minute'].astype(str), format='%H:%M')
          .dt.time)
print (time)
0    08:12:00
1    09:30:00
2    03:15:00
dtype: object

另一个想法是将多个 Hour 乘以100,加上 minute 并使用%H%M格式进行转换:
time = pd.to_datetime(df['Hour']*100 + df['Minute'], format='%H%M').dt.time
print (time)
0    08:12:00
1    09:30:00
2    03:15:00
dtype: object

尝试了两个选项 - 第一个对我起了作用,但是第二个没有 - 它引发了以下错误ValueError:time data'0' does not match format'%H%M'(match) - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接