在熊猫数据框中减去两列

时间:2018-09-06 23:16:26

标签: python pandas dataframe

我在pandas数据框中有两列,以24小时格式表示一天中的小时,即18:00:00。它们都是对象数据类型,我想找出两列在小时数上的差异。例如。 18:00:0017: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']

有人可以协助吗?预先感谢。

2 个答案:

答案 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