def attribute_daterange_history(security,start_date,end_date,fields=('open','close','high','low')):
daily = pro.daily(ts_code=security)
daily.to_csv(security+'.csv')
daily_cal = pd.read_csv(security+'.csv',index_col='trade_date')
daily_cal = daily_cal.loc[end_date:start_date,['open','close','high','low']]
return daily_cal
print(attribute_daterange_history('000001.SZ',20181120,20181130))
其中daily_cal = daily_cal.loc[end_date:start_date,['open','close','high','low']],红字部分如果替换成start_date:end_date就会报错。
daily_cal = daily_cal.loc[end_date:start_date,['open','close','high','low']]运行结果:
open close high low
trade_date
20181130 10.22 10.36 10.36 10.17
20181129 10.35 10.20 10.39 10.19
20181128 10.17 10.28 10.31 10.16
20181127 10.35 10.18 10.39 10.16
20181126 10.34 10.34 10.46 10.30
20181123 10.53 10.32 10.58 10.31
20181122 10.67 10.55 10.67 10.48
20181121 10.50 10.61 10.67 10.48
20181120 10.75 10.57 10.80 10.52
daily_cal = daily_cal.loc[start_date:end_date,['open','close','high','low']],运行结果为:
Empty DataFrame
Columns: [open, close, high, low]
Index: []
这与导入数据trade_date的排序方式有关。在此例中,数据从大至小排列。因此应将end_date放置在前。