pandas运行Series.replace时报ValueError: Series.replace cannot use dict-value and non-None to_replace求助
错误原因
- 你调用
df['native-country'].mode()时,pandas返回的是Series类型对象,而非单个众数字符串。哪怕该列只有唯一众数,返回结果也会保留索引结构,并非直接的标量值。 Series.replace()方法如果第二个参数传入的是Series,会被识别为键值映射结构,和你第一个参数传入的单个字符串"?"规则冲突,因此触发ValueError。
修复方案
只需要提取出mode返回结果里的第一个众数值即可,同时你已经提前过滤了"?"的异常值,直接用过滤后的数据集计算众数结果更准确,修改后的代码如下:
h1=df[df["native-country"]!="?"] # 提取过滤后数据集的众数标量值 mode_val = h1['native-country'].mode().iloc[0] df['native-country'] = df['native-country'].replace("?", mode_val)
内容的提问来源于stack exchange,提问作者Vishnu Venkat18
相关产品推荐
相关产品推荐

