You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两个结构一致的DataFrame执行melt仅一个成功,报语法错误如何解决?

问题根因

你提供的两行melt代码都存在相同的语法错误,所谓第一行能正常运行大概率是你记错了实际运行状态。
错误核心是value_vars参数后漏写了赋值等号=:

  • 你写的value_vars['men','women']不会被Python识别为「给value_vars参数传入列表['men','women']」,而是会被解析为「取变量value_vars的['men','women']索引对应的取值,把这个取值作为无参数名的位置参数传给melt方法」。
  • 按照Python语法规则,关键字参数(即带参数名赋值的参数,比如代码里的id_vars = 'location')之后不允许出现位置参数,因此直接触发你看到的Syntax error: Positional argument follows keyword argument报错。

修复方案

给value_vars补充赋值等号即可:

df_1 = df_a.melt(id_vars = 'location', value_vars = ['men','women'], var_name = 'gender', value_name = 'income')
df_2 = df_b.melt(id_vars = 'age', value_vars = ['men','women'], var_name = 'gender', value_name = 'income')

额外注意事项

你描述中提到df_a、df_b的性别列是Men、Women(首字母大写),但代码中传的是小写的'men'、'women',修复语法错误后运行会因为找不到对应列抛出KeyError,需要保证传入的列名和实际DataFrame的列名大小写完全一致。


内容的提问来源于stack exchange,提问作者Ivy McKee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:45:03