使用Pandas构建情感分析DataFrame时遇数组长度一致仍报错问题
解决Pandas创建DataFrame时的"arrays must all be same length"报错
兄弟,我太懂你这种明明数组长度对得上却报错的崩溃感了!我之前做情感分析的时候也踩过一模一样的坑,给你捋清楚问题出在哪:
你手里的text_sentences、score_list、keyinfo_list三个数组长度都是182没错,但你调用pd.DataFrame()的方式完全错了!Pandas的构造函数根本不是这么传参的——你直接把三个数组丢进去,它会把第一个数组当成表格的数据主体,第二个当成行索引,第三个当成列索引,这完全不是你想要的“三个数组各成一列”的需求,哪怕长度一致,这种逻辑也会触发报错。
先看看你写的代码:
print(len(text_sentences),len(score_list),len(keyinfo_list)) df = pd.DataFrame(text_sentences,score_list,keyinfo_list) print(df)
对应的报错开头是:
ValueError Traceback (most recent call last) <ipython-input-...
正确的解决方法有两种,优先推荐第一种:
方法1:用字典传参(最直观)
直接把每个数组和对应的列名绑定成字典,Pandas会自动把它们拼成列对齐的DataFrame:
import pandas as pd df = pd.DataFrame({ "句子内容": text_sentences, "情感得分": score_list, "关键词": keyinfo_list }) print(df)
方法2:转置行数据成列
如果习惯用列表传参,可以先把三个数组作为行放进DataFrame,再转置成列,最后给列命名:
import pandas as pd # 先按行拼接,再转置成列 df = pd.DataFrame([text_sentences, score_list, keyinfo_list]).T # 给列设置名称 df.columns = ["句子内容", "情感得分", "关键词"] print(df)
另外可以顺便检查下每个数组里的元素有没有嵌套情况(比如某个元素本身是个长度不一的小列表),不过你已经确认了数组总长度都是182,大概率就是传参方式的问题,换上面的方法肯定能解决!
内容的提问来源于stack exchange,提问作者Guoguo
相关产品推荐
相关产品推荐

