用最大时间减去最小时间 然后除以次数
报错:
TypeError: ufunc true_divide cannot use operands with types dtype(‘O’) and dtype(’<m8[ns]’)
同样的程序在处理训练集和测试集出现的结果是不同的
时间类型均为
orderTime_x datetime64[ns]
orderTime_y datetime64[ns]
dtype: object
一种结果是
ID
100000000013 10122563500000000
100000000393 0
100000000459 727472500000000
100000000637 0
100000000695 0
100000000949 257783333333333
100000000975 0
100000001023 1117524500000000
dtypes 为object 或者 dtype('O')
另一种情况
userid
100000001023 0 days 00:00:00
100000001505 1 days 04:46:17.750000
100000003461 0 days 00:00:00
100000005007 0 days 00:00:00
100000008119 0 days 00:00:00
100000009017 30 days 01:18:12.500000
100000009773 0 days 00:00:00
100000009925 0 days 00:41:10.500000
100000010199 27 days 11:07:17.625000
100000014029 0 days 00:00:00
100000015969 0 days 00:00:00
dtypes为
timedelta64[ns] 或者 dtype('<m8[ns]')
不清楚是啥原因,只好分开进行了处理
这里面也有一个坑
判断是否为object类型时返回的不一定是bool类型,需要进行记一步的判断
f21 = pd.DataFrame(feature.loc[time_gap.index]["F2.1"])
f217 = (time_gap["orderTime_x"] -
time_gap["orderTime_y"]) / f21["F2.1"]
f217 = pd.DataFrame(f217)
bf217 = f217.dtypes != object
# 是否为bool类型
if isinstance(bf217, bool):
# 如果为bool,则判断是否为object
if bf217:
f217[0] = f217[0].values / np.timedelta64(1, 'ns')
else:
# 如果不是bool,需要使用.bool()方法变成真正的bool类型
if bf217.bool():
f217[0] = f217[0].values / np.timedelta64(1, 'ns')
feature["F2.17"] = f217