问题描述
file:[Terminal]
ValueError: 'HIS_批准文号' is both an index level and a column label, which is ambiguous.
ValueError: cannot insert 招采_批准文号, already exists
有这两个错误,使用函数 merge
合并的时候出现第一个错误,将两个 DataFrame 的索引 reset_index
就会出现第二个错误。
打印合并之前的两个数据帧,可以看到这 pandas 莫名其妙地把 招采_批准文号
列设置为了索引,第二个数据帧也是如此。
file:[Terminal]
招采_药品名称 招采_统一编码 ... 招采_实际入库数量 招采_实际入库金额
招采_批准文号 ...
国药准字H20023231 氯化钠注射液 XB05XAL211B002010115986 ... 800 2952.0
国药准字H20023232 氯化钠注射液 XB05XAL211B002020125986 ... 1200 4668.0
国药准字H20213503 注射用头孢唑林钠 XJ01DBT103B001040230507 ... 100 4251.0
国药准字H20213504 注射用头孢唑林钠 XJ01DBT103B001050240507 ... 100 7227.0
国药准字Z65020176 养心达瓦依米西克蜜膏 ZI03AAY0103020506004 ... 600 29358.0
[5 rows x 13 columns]
HIS_规格 HIS_批准文号 ... HIS_入库数量 HIS_入库总金额
HIS_批准文号 ...
20051017 2ml*1支/支 20051017 ... 1800 5022.0
H20010826 5ml*1支/支 H20010826 ... 300 6630.0
H20140032 50ug*100片/盒 H20140032 ... 200 4976.0
H20140742 1.7ml*68mg/支 H20140742 ... 800 5600.0
J20180055 30mg*7片/盒 J20180055 ... 1700 39219.0
... ... ... ... ... ...
国药准字Z65020171 0.3g*24粒/盒 国药准字Z65020171 ... 1150 23897.0
国药准字Z65020172 35g*1盒/盒 国药准字Z65020172 ... 1840 90031.2
国药准字Z65020173 12g*6袋/盒 国药准字Z65020173 ... 800 24440.0
国药准字Z65020174 12g*6袋/盒 国药准字Z65020174 ... 600 11058.0
国药准字Z65020185 200ml*1瓶/瓶 国药准字Z65020185 ... 1040 41392.0
[274 rows x 7 columns]
解决办法
把这些索引值全部删掉,去掉之后两个数据帧的索引值就是以 0 开始逐步递增:
file:[main.py]
grouped_platform_key = '招采_批准文号'
grouped_his_key = 'HIS_批准文号'
agg_platform_data.reset_index(drop=True, inplace=True)
agg_his_data.reset_index(drop=True, inplace=True)
merged_data = pd.merge(agg_platform_data, agg_his_data, left_on=grouped_platform_key, right_on=grouped_his_key)
标签:both,HIS,...,index,招采,批准文号,报错,国药准字
From: https://www.cnblogs.com/Himmelbleu/p/17926340.html