pandas 问题记录
resample报错
TypeError: Only valid with DatetimeIndex, TimedeltaIndex or PeriodIndex, but got an instance of ‘Index’
解决方法
#取每分钟第一条套利价差数据
#如果报错,说明没有套利价差数据,直接返回
if len(qihuo3) == 0:
return
qihuo3_open = qihuo3.resample('1min').first()
#取每分钟最后一条套利价差数据
qihuo3_close = qihuo3.resample('1min').last()
#取每分钟最大套利价差
qihuo3_high = qihuo3.resample('1min').max()
#取每分钟最小套利价差
qihuo3_low = qihuo3.resample('1min').min()
#取每分钟成交量
qihuo3_volume = qihuo3.resample('1min').sum()
1. 判断是否为空数据
在 resample 前面加上 if 判断即可
if len(qihuo3) == 0:
return
2. 判断索引是否为时间格式
#将time设置为索引
qihuo3 = qihuo3.set_index('time')
#设置 time 为时间格式
qihuo3['time'] = pd.to_datetime(qihuo3['time'])
3.判断索引中是否有非时间格式(一般错误是值等于 0)
#排除time_A 或者 time_B 为0 的行
qihuo3 = qihuo3[(qihuo3['time_A']!=0) & (qihuo3['time_B']!=0)]
#取 A 和 B较大的时间作为索引
qihuo3['time'] = qihuo3[['time_A','time_B']].max(axis=1)