因此,我希望通过获取两个日期时间列之间的差异来创建一个名为df["Diff"]
的新列。我的代码是:
df["Diff"] = df["Time"] - df_target["Time"]
当我运行此代码时,收到以下错误消息:
TypeError: Cannot compare type 'Timestamp' with type 'int'
但我确保使用.dtype
确保两列都是datetime-data类型
我还检查了任何列中的任何整数值,但找不到任何整数值。
以下是两列数据的示例:
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
答案 0 :(得分:2)
好的,所以我想出了答案。
由于其中一个数据帧具有基于日期时间的索引,而另一个数据帧具有整数索引,因此我使用reset_index使两个数据帧都具有由整数组成的索引。然后让我使用上面提到的代码。
df["Diff"] = df["Time"] - df_target["Time"]
感谢您的帮助!
答案 1 :(得分:0)
将日期转换为pd.to_datetime
的两列,然后执行操作。
答案 2 :(得分: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