Вот мой фрейм данных:
Name Job
A Back-end Engineer
B Front-end Engineer;Product Manager
C Product Manager;Business Development;System Analyst
Я хочу преобразовать этот фрейм данных в фиктивный (одна горячая кодировка) следующим образом:
Name Back-end Engineer Business Development Front-end Engineer Product Manager System Analyst
A 1 0 0 0 0
B 0 0 1 1 0
C 0 1 0 1 0
Я пытался использовать pandas.get_dummies, но это не удалось, потому что переменная является многомерной.
Спасибо @Benales. Итак, это означает, что мне нужно разделить мой столбец на несколько переменных
Вы можете попробовать что-то вроде этого:
import pandas as pd
from collections import defaultdict
df = pd.read_csv("path/to/your.csv")
jobs = df["Job"]
job_list = set()
for job in jobs:
job_names = job.split(";")
for job_name in job_names:
job_list.add(job_name)
new_df = defaultdict(list)
for index, row in df.iterrows():
new_df["Name"].append(row["Name"])
for job in job_list:
if job in row["Job"]:
new_df[job].append(1)
else:
new_df[job].append(0)
new_df = pd.DataFrame.from_dict(new_df)
new_df.to_csv("/path/to/new.csv")
Проверьте ответ здесь, этот вопрос уже задавали.