【问题标题】:Subtracting columns of Timestamps gives me TypeError减去时间戳列给我 TypeError
【发布时间】:2015-12-22 14:12:55
【问题描述】:

我有一个看起来像这样的数据框

                      dt1               dt2
0 2011-09-12 09:57:03.839546  2011-09-12 09:51:29.332474
1 2011-09-12 09:57:03.841132  2011-09-12 09:55:29.332774
2 2011-09-12 10:57:28.581049  2011-09-12 10:55:29.332774
3 2011-09-12 10:57:28.581049  2011-09-12 10:55:29.332774
4 2011-09-12 10:57:28.582636  2011-09-12 10:55:29.332774

条目的类是pandas.tslib.Timestamp。当我这样做时

df['dt1'][:]-df['dt2'][:]

我很好,但是这个

df['dt1']-df['dt2']

失败并出现以下错误

TypeError: Argument 'values' has incorrect type (expected numpy.ndarray, got Series)

为什么会发生这种情况,我该如何解决?

【问题讨论】:

  • 这是预期的行为。后面的一个用于算术运算。
  • 那么,我怎样才能减去时间戳列呢?
  • 我对减法的回答是否符合您的需求?
  • 好的,谢谢。接受。

标签: python pandas multidimensional-array dataframe series


【解决方案1】:

转换为datetime64 可以修复它。

df['dt1'] = pd.to_datetime(df['dt1'])
df['dt2'] = pd.to_datetime(df['dt2'])

df['dt1']-df['dt2']

0   00:05:34.507072
1   00:01:34.508358
2   00:01:59.248275
3   00:01:59.248275
4   00:01:59.249862

【讨论】:

  • 但是为什么我会得到 0 天呢?为什么它没有显示更详细的差异信息?
  • 您的问题有一个错误,因为您写了df['dt1']-df['dt1']。我修改了答案以计算dt1dt2 之间的差异。
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 2014-04-25
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2022-11-02
  • 2018-03-04
  • 1970-01-01
相关资源
最近更新 更多