2

所以,我想df["Diff"]通过获取两个日期时间列之间的差异来创建一个新列。我的代码是,因此:

df["Diff"] = df["Time"] - df_target["Time"]

当我运行此代码时,我收到以下错误消息:

TypeError: Cannot compare type 'Timestamp' with type 'int'

但是,我已确保两列都是日期时间数据类型,使用.dtype.
我还检查了任何列中的任何整数值,但找不到任何值。

以下是两列数据的示例:

df.Time

Time
2017-09-01 01:31:10.000  2017-09-01 01:31:10

df_target

Time
2017-12-01 22:17:00  2017-12-01 22:17:00
4

3 回答 3

2

好的,所以我想出了答案。

由于其中一个数据帧有一个基于日期时间的索引,而另一个有一个整数索引,我使用 reset_index 使两个数据帧都有一个由整数组成的索引。然后让我使用上面提到的代码。

df["Diff"] = df["Time"] - df_target["Time"]

谢谢你的帮助!

于 2018-06-14T10:48:14.307 回答
0

将带有日期的两列转换为pd.to_datetime,然后执行操作。

于 2018-06-14T09:12:16.433 回答
0

Pandas 时间戳差异返回一个 datetime.timedelta 对象。这可以通过使用as_type方法轻松转换为小时,就像这样

import pandas
df = pandas.DataFrame(columns=['to','fr','ans'])
df.to = [pandas.Timestamp('2014-01-24 13:03:12.050000'), pandas.Timestamp('2014-01-27 
11:57:18.240000'), pandas.Timestamp('2014-01-23 10:07:47.660000')]
df.fr = [pandas.Timestamp('2014-01-26 23:41:21.870000'), pandas.Timestamp('2014-01-27 
15:38:22.540000'), pandas.Timestamp('2014-01-23 18:50:41.420000')]
(df.fr-df.to).astype('timedelta64[h]')

屈服,

0    58
1     3
2     8
dtype: float64
于 2018-06-14T09:59:23.187 回答