如何解决pandas绘图时出现的TypeError: string indices must be integers错误
解决TypeError: string indices must be integers绘图错误
错误原因
这个报错核心是**payment_ym未被正确识别为DataFrame的列**,或者绘图参数传递格式有误:
- 创建
t2后,原透视表的payment_ym是索引而非列,如果重置索引的操作没生效(比如没重新赋值给t2,或遗漏inplace=True),调用plot(x='payment_ym')时,pandas会尝试用字符串索引去访问列,触发类型错误。 - 另外,
y参数外层多套了一层括号(y=(['列名'])),虽然语法合法,但可能引发解析异常。
修复步骤
- 确保索引正确转为列
创建t2时直接完成重置索引操作:
# 创建t2的同时重置索引,将payment_ym转为列 t2 = t1[['19.01-19.02','19.03-19.04','19.05-19.07']].reset_index()
或者分两步执行:
t2 = t1[['19.01-19.02','19.03-19.04','19.05-19.07']] # 重置索引并生效 t2.reset_index(inplace=True)
- 修正绘图参数格式
去掉y参数外层的括号,直接传入列名列表:
t2.plot(x='payment_ym', y=['19.01-19.02', '19.03-19.04', '19.05-19.07'], kind='bar')
验证方法
执行完重置索引后,先打印列名确认payment_ym已转为列:
print(t2.columns) # 预期输出: Index(['payment_ym', '19.01-19.02', '19.03-19.04', '19.05-19.07'], dtype='object')
内容的提问来源于stack exchange,提问作者bbkar
相关产品推荐
相关产品推荐

