毫无疑问这是一个边缘情况,看起来减法方法和运算符对dtype float
的行为相同,但对于dtype datetime64[ns]
则不行(见下文)。这是一个错误还是故意行为?
import pandas as pd
s1 = pd.Series(dtype='datetime64[ns]')
s2 = pd.Series(dtype='datetime64[ns]')
s3 = pd.Series(dtype='float')
s4 = pd.Series(dtype='float')
减法运算符产生:
s1 - s2
TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('O')
s3 - s4
Series([], dtype: float64)
而减法方法产生:
s1.subtract(s2)
Series([], dtype: timedelta64[ns])
s3.subtract(s4)
Series([], dtype: float64)