Python Pandas多列melt报错求助:KeyError提示Year列不存在
问题解决办法
- 报错原因:你用
pivot_table把Year设为DataFrame的索引后,它就不再是普通列了,melt的id_vars=["Year"]自然找不到这个列,所以触发KeyError。
两种可行的解决方式:
方式一:pivot时直接把Year保留为列
修改pivot_table的代码,执行后用reset_index()把索引转成列:
tourism5 = tourism4.pivot_table(index=["Year"], columns=["Tourists to Ireland", "Area of Residence"], values="VALUE").reset_index()
方式二:先重置索引再执行melt
如果不想改之前的pivot代码,先把索引转成普通列:
# 先重置索引,让Year变回列 tourism5 = tourism5.reset_index() # 再执行melt,注意var_name要匹配原列的层级 tourism6 = tourism5.melt(id_vars=["Year"], var_name=["Tourists to Ireland", "Area of Residence"], value_name="VALUE")
注意点:
你原本写的var_name= ["Average Stay Nights", "Tourists Expenditure", "Tourists Number"]是错误的,因为tourism5的列层级是"Tourists to Ireland"和"Area of Residence",melt的var_name需要和这个层级对应,否则会导致列含义混乱。
内容的提问来源于stack exchange,提问作者user28300696
相关产品推荐
相关产品推荐

