无法比较类型“ndarray(dtype=int64)”和“str”

2024-04-27 08:38:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我要替换的数据示例 enter image description here

数据具有以下属性

购买v-high、high、med、low 维护v-高、高、中、低 门2,3,4,5-以上 2,4人以上 小号,中号,大号 安全低,中高

这就是我所做的

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())

打印时显示“无法比较类型'ndarray(dtype=int64)'和'str'”


Tags: 数据dfmedpricereplacelowboothigh
1条回答
网友
1楼 · 发布于 2024-04-27 08:38:06

你们中的一些人通过一个(int)值来替换,实际上是一个ndarrayint64值。 此列中只有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)

输出:

TypeError: Cannot compare types 'ndarray(dtype=int64)' and 'str'

相关问题 更多 >