Преобразование смешанного типа данных в числовой в Python

#python #logistic-regression

Вопрос:

Я пытаюсь преобразовать нижеприведенную таблицу из смешанного типа данных в числовой

Акционер Продукт (CWS) Кредитная связь
Уход за Партнером Webroot БР-1278
NOC — PST RMM — Запрос сценариев BR-1460

Я попытался использовать приведенный ниже код

«данные[«Заинтересованная сторона»] = pd.to_numeric(данные[«Заинтересованная сторона»], ошибки=»принуждение»).тип(«Int64″)»

и вывод-это преобразование столбца в пустые ячейки и 0 в несколько.

Комментарии:

1. Я попытался использовать » данные [«Заинтересованная сторона»] = pd.to_numeric(данные [«Заинтересованная сторона»], ошибки= «принуждение»). astype («Int64″)», но вывод кажется неправильным. Я приношу извинения, если это неправильный способ поместить код в комментарий

2. пожалуйста, укажите свой код и выходные данные в вопросе

3. Чего вы пытаетесь достичь. Столбец «Заинтересованная сторона» содержит только строки. Почему вы хотите преобразовать его в int? Каков ваш ожидаемый результат? Существуют ли только две разные заинтересованные стороны, и одной из них следует назначить a 1 , а другой a 0 ?

4. @FredMaster есть еще заинтересованные стороны, продукты, я только что добавил 2 из них в качестве примера, и я пытаюсь преобразовать все столбцы в числовые. можно ли прикрепить файл данных exel здесь

5. Но на основе какой логики вы хотите преобразовать его в 0 и 1? Например, «Забота о партнере» должна быть присвоена 1 или 0?

Ответ №1:

Я не совсем уверен, что ты хочешь сделать.

Проблема в том, что вы не можете преобразовать произвольную строку в int, используя astype , потому что неясно, во что, например, следует преобразовать «abc».

Преобразование в 0 и 1

Но вы могли try бы проверить, возможно ли преобразование. Если нет: ты задаешь 0

Что-то вроде этого:

 def convert_to_int(col):
    numbers = []
    for el in col:
        try:
            int(el) # Check if conversion to int is possible
            number = 1 # assign 1 if conversion successful 
        except:
            number = 0 # else: assign a 0
        numbers.append(number)
    return numbers

# Example data
data = {"Stakeholder":["Partner Care", "NOC - PST", "12", "0", "Other Stakeholder"]}
df = pd.DataFrame(data)

# Convered df
df["Stakeholder_ints"] = convert_to_int(df["Stakeholder"])
 

Преобразование в числовые категории

 from sklearn.preprocessing import LabelEncoder  
data = {"Stakeholder":["Partner Care", "NOC - PST", "12", "0", "Other Stakeholder"]}
df = pd.DataFrame(data)

col = df["Stakeholder"]
le = LabelEncoder()
df["Stakeholder_cats"] = le.fit_transform(col)
 

Комментарии:

1. Я обязательно попробую это сделать, к сожалению, я не могу попробовать сейчас, я свяжусь с вами с результатами к субботе…..спасибо за быстрый ответ. Я хотел бы поднять голос или поднять большой палец за вашу быструю помощь

2. Я не понимал, что столбец имеет целочисленное значение в столбце заинтересованных сторон «NOC — R1 Soft».