Невозможно сравнить типы 'ndarray (dtype = int64)' и 'str' - PullRequest
0 голосов
/ 26 ноября 2018

Пример данных, которые я хочу заменить enter image description here

Данные имеют следующие атрибуты

Покупка v-high, high, med, low Maint v-high, высокий, средний, низкий Двери 2,3,4,5-более человек, 2,4 больше lug_boot маленький, средний, большой уровень безопасности низкий, средний.высокий

вот что я сделал

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'"

1 Ответ

0 голосов
/ 26 ноября 2018

Некоторые из вас string, которые вы передали для замены значением (int), на самом деле представляют собой ndarray из int64 значений.У вас есть только данные типа 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...