我在pandas数据框中有两列,以24小时格式表示一天中的小时,即18:00:00
。它们都是对象数据类型,我想找出两列在小时数上的差异。例如。 18:00:00
和17:00:00
之间的差异应为1。我尝试使用to_timedelta
函数,但即使将单位指定为“ h”,它也会返回“未指定单位”错误。
d = {'col1': ['18:00:00', '19:00:00'], 'col2': ['17:00:00', '17:00:00']}
df = pd.DataFrame(data=d)
df
df['col1']-df['col2']
有人可以协助吗?预先感谢。
答案 0 :(得分:3)
您必须先转换to_datetime
:
df.col1 = pd.to_datetime(df.col1)
df.col2 = pd.to_datetime(df.col2)
df.col1.sub(df.col2)
0 01:00:00
1 02:00:00
dtype: timedelta64[ns]
如果只需要小时数,则除以另一个Timedelta
:
df.col1.sub(df.col2).div(pd.Timedelta('1h'))
0 1.0
1 2.0
dtype: float64
答案 1 :(得分:1)
使用
df=df.apply(pd.to_datetime)
(df.col1-df.col2).dt.seconds/3600
Out[524]:
0 1.0
1 2.0
dtype: float64