我想在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]
为什么?
答案 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)
一个案例是否会产生正确的结果,而一个案例会产生您获得的结果?这可能是我的猜测。