我要替换的数据示例

数据具有以下属性
以下是我所做的
enter code here
#Buying price generalization
df["Buying_Price"]=df["Buying_Price"].replace({"vhigh":4})
df["Buying_Price"]=df["Buying_Price"].replace({"high":3})
df["Buying_Price"]=df["Buying_Price"].replace({"med":2})
df["Buying_Price"]=df["Buying_Price"].replace({"low":1})
#Maintanace generalization
df["Maintanance_price"]=df["Maintanance_price"].replace({"vhigh":4})
df["Maintanance_price"]=df["Maintanance_price"].replace({"high":3})
df["Maintanance_price"]=df["Maintanance_price"].replace({"med":2})
df["Maintanance_price"]=df["Maintanance_price"].replace({"low":1})
#lug_boot generalization
df["Lug_boot"]=df["Lug_boot"].replace({"small":1})
df["Lug_boot"]=df["Lug_boot"].replace({"med":2})
df["Lug_boot"]=df["Lug_boot"].replace({"big":3})
#Safety Generalization
df["Safety"]=df["Safety"].replace({"low":1})
df["Safety"]=df["Safety"].replace({"med":2})
df["Safety"]=df["Safety"].replace({"big":3})
print(df.head())印刷时显示:
Cannot compare types 'ndarray(dtype=int64)' and 'str'发布于 2018-11-26 10:32:54
您传递给用( string )值替换的一些int实际上是int64值的ndarray。本专栏中只有int64( here actually ndarray(dtype=int64))类型数据。请参阅文档pandas.Dataframe.replace()。replace()试图查找并将它们与您传递的str值进行比较。
df["Buying_Price"]=df["Buying_Price"].replace({"vhigh":4})查找所有"vhigh"值,并将其与当前包含的值进行比较,将其替换为4。在比较时,它失败了,因为尝试将str数据与int64 ('ndarray(dtype=int64)')进行比较。
--一个简单的例子来模拟这一点:
import pandas as pd
import numpy as np
a = np.array([1])
df = pd.DataFrame({"Maintanance_price": a})
df["Maintanance_price"] = df["Maintanance_price"].replace({"a":1})
print(df)Out:
TypeError: Cannot compare types 'ndarray(dtype=int64)' and 'str'发布于 2020-05-31 16:00:22
我也面临着同样的问题,对我起作用的是将特性的数据类型转换为对象类型。
train['Some_feature']=train.Some_feature.astype(object)希望能帮上忙。
发布于 2020-06-23 20:43:01
您可以尝试以下代码:
df['Maintanance_price'].replace(to_replace = ['low', 'med','high','vhigh'], value =[1,2,3,4], inplace=True)
df.head()此外,按照@ouiemboughrra的建议,检查这些值是否已经转换为数字,以防您重新运行单元格。
https://stackoverflow.com/questions/53478932
复制相似问题