使用Pywedge_Charts触发DataFrame.drop() TypeError错误的解决求助
问题:Pywedge_Charts初始化报错TypeError
我尝试使用Pywedge_Charts处理包含3列('State'、'Taxes'、'Revenues_year')的CSV文件,编写了如下代码:
import pandas as pd import pywedge as pw tax = pd.read_csv('C:/Users/XXXX/OneDrive/Documents/Python/Taxes.csv') viz = pw.Pywedge_Charts(tax, c=None, y='State')
运行后出现如下错误信息:
TypeError Traceback (most recent call last) Cell In[28], line 1 ----> 1 viz = pw.Pywedge_Charts(tax, c=None, y='Taxes') File ~\anaconda3\Lib\site-packages\pywedge\pywedge.py:27, in Pywedge_Charts.__init__(self, train, c, y, manual) 25 self.c = c 26 self.y = y ---> 27 self.X = self.train.drop(self.y,1) 28 self.manual = manual TypeError: DataFrame.drop() takes from 1 to 2 positional arguments but 3 were given
我是Python新手,这段代码看似基础,已尝试更换y列、更换CSV文件,但问题仍存在,请问该如何修复这个错误?
修复方案
这个错误的核心原因是Pywedge库版本与你安装的Pandas版本不兼容:
- 新版Pandas(2.0+)已移除
DataFrame.drop()方法中用位置参数指定轴的写法(不能直接传1代表axis=1),必须显式用关键字参数axis=1或columns指定要删除的列。 - 你使用的Pywedge版本内部代码仍在使用旧写法
drop(self.y,1),因此触发TypeError。
有两种解决办法,任选其一即可:
方法1:修改Pywedge库源码
找到报错文件路径(错误信息里的~\anaconda3\Lib\site-packages\pywedge\pywedge.py),打开后定位到第27行:
self.X = self.train.drop(self.y,1)
将其修改为以下两种写法之一:
# 写法1:用axis关键字参数 self.X = self.train.drop(self.y, axis=1) # 写法2:用columns关键字参数(更直观) self.X = self.train.drop(columns=self.y)
保存文件后重新运行代码即可。
方法2:降级Pandas到兼容版本
若不想修改库源码,可将Pandas降级到2.0之前的版本,比如1.5.3:
打开终端/Anaconda Prompt,执行命令:
pip install pandas==1.5.3
等待安装完成后重新运行代码。
内容的提问来源于stack exchange,提问作者HugoCBa
相关产品推荐
相关产品推荐

