Pandas .sub()有效,但减去运算符失败

时间:2015-01-15 23:04:49

标签: python pandas

我想在Pandas数据框datetime中减去s类型的列。

[in] s.shape
[out] (1381,5)

专栏t1中的日期:

[in] s['t1'].tail(3)
[out] 56   2013-01-01
      62   2013-01-01
      63   2013-01-01
      Name: t1, dtype: datetime64[ns]

专栏t2中的日期:

[in] s['t2'].tail(3)
[out] 56   2013-01-02
      62   2013-01-02
      63   2013-01-02
      Name: t2, dtype: datetime64[ns]

.sub()运算符会产生预期结果:d=s['t2'].sub(s['t1'])

[in] print d.shape
[out] (1381,)

[in] d.tail(3)
[out] 56   1 days
      62   1 days
      63   1 days
      Name: t2, dtype: timedelta64[ns]

减法运算符会产生意外结果:d=s['t2']-s['t1']

[in] print d.shape
[out] (4293,)

[out] 592   570 days
      593   660 days
      594   180 days
      dtype: timedelta64[ns]

为什么?

2 个答案:

答案 0 :(得分:0)

显然这与使用中的数据结构有关。可能有一种更简单,更清洁的方式来计算熊猫的日期时间差异。虽然我还没有机会详细查看文档。也许试试s['t2'].values - s['t1'].values

答案 1 :(得分:0)

如果将sub()中的axis参数从1更改为0或0更改为1:

   df.sub(axis=1) vs df.sub(axis=0)

一个案例是否会产生正确的结果,而一个案例会产生您获得的结果?这可能是我的猜测。