From df556532d027f33d45eb52cf2c37ad81778e3a93 Mon Sep 17 00:00:00 2001 From: zhupr Date: Tue, 8 Dec 2020 23:03:56 +0800 Subject: [PATCH] Fix the error when the stock code is a number --- qlib/data/data.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/qlib/data/data.py b/qlib/data/data.py index 3dcb22699..c8e2878b4 100644 --- a/qlib/data/data.py +++ b/qlib/data/data.py @@ -223,8 +223,11 @@ class InstrumentProvider(abc.ABC): for _path in Path(C.get_data_path()).joinpath("instruments").glob("*.txt"): _df = pd.read_csv(_path, sep="\t", names=["inst", "start_datetime", "end_datetime", "save_inst"]) _df_list.append(_df.iloc[:, [0, -1]]) - df = pd.concat(_df_list, sort=False).sort_values("save_inst") - df = df.drop_duplicates(subset=["save_inst"], keep="first").fillna(axis=1, method="ffill") + df = pd.concat(_df_list, sort=False) + df["inst"] = df["inst"].astype(str) + df = df.fillna(axis=1, method="ffill") + df = df.sort_values("inst").drop_duplicates(subset=["inst"], keep="first") + df["save_inst"] = df["save_inst"].astype(str) _instruments_map = df.set_index("inst").iloc[:, 0].to_dict() setattr(self, "_instruments_map", _instruments_map) return _instruments_map.get(instrument, instrument) @@ -591,6 +594,8 @@ class LocalInstrumentProvider(InstrumentProvider): df = pd.read_csv(fname, sep="\t", names=["inst", "start_datetime", "end_datetime", "save_inst"]) df["start_datetime"] = pd.to_datetime(df["start_datetime"]) df["end_datetime"] = pd.to_datetime(df["end_datetime"]) + df["inst"] = df["inst"].astype(str) + df["save_inst"] = df.loc[:, ["inst", "save_inst"]].fillna(axis=1, method="ffill")["save_inst"].astype(str) for row in df.itertuples(index=False): _instruments.setdefault(row[0], []).append((row[1], row[2])) return _instruments