PySpark使用melt实现宽表转长表报错:DataFrame无melt属性
问题解决方法
错误原因及对应解决办法:
- Pandas版本过低:
melt作为DataFrame的实例方法是在Pandas 0.20.0版本才新增的,如果你用的版本比这旧,就会触发这个报错。- 先检查当前版本:
import pandas as pd print(pd.__version__) - 版本过低就升级:
pip install --upgrade pandas
- 先检查当前版本:
- 变量不是Pandas DataFrame:
JP_ch或GJ_ch可能不是标准的Pandas DataFrame对象(比如是PySpark DataFrame、Series或者其他数据结构)。- 先确认变量类型:
print(type(JP_ch)) print(type(GJ_ch)) - 如果不是
<class 'pandas.core.frame.DataFrame'>,就转成Pandas DataFrame:# 示例:PySpark DataFrame转Pandas JP_ch = JP_ch.toPandas() # 示例:其他结构转DataFrame JP_ch = pd.DataFrame(JP_ch)
- 先确认变量类型:
- 临时替代方案(不想升级版本):用顶层的
pd.melt()函数,语法和实例方法一致,只是把DataFrame作为第一个参数传入:df_pivot_jp = pd.melt(JP_ch, id_vars=['c_id'], var_name='views_on_character', value_name='answer') df_pivot_gj = pd.melt(GJ_ch, id_vars=['c_id'], var_name='views_on_character', value_name='answer')
内容的提问来源于stack exchange,提问作者ar_mm18
相关产品推荐
相关产品推荐

