Создайте новые столбцы, используя уникальные значения в других столбцах в Python

Я хотел бы создать новые столбцы в моем кадре данных, используя уникальные значения из другого столбца, например

Столбец 1 имеет следующие значения:

Apple
Apple
Banana
Strawberry
Strawberry
Strawberry

Когда я проверяю уникальные значения в столбце 1, вывод будет таким:

Apple
Banana
Strawberry

Теперь я хочу использовать эти три значения для создания столбцов с именами «Яблоко», «Банан», «Клубника», и я хочу, чтобы код оставался динамическим, чтобы адаптироваться к тому количеству уникальных значений, которое присутствует в столбце 1.

Я новичок в python, буду признателен за любую помощь!

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

предоставить минимальный воспроизводимый код в текстовом формате (без скриншотов)

eshirvana 23.11.2022 17:28

Если это датафрейм pandas, добавьте этот тег к своему вопросу.

Pranav Hosangadi 23.11.2022 17:33

Отвечает ли это на ваш вопрос? Pandas Python: как создать несколько столбцов из списка (я знаю, что этот вопрос касается добавления столбцов из списка, но идея одинакова для любого итерируемого объекта)

Pranav Hosangadi 23.11.2022 17:34

Вот пример данных и кода: Мой исходный столбец («Рейтинг») имеет два значения «Согласен» и «Не согласен». Я вручную создаю новые столбцы, подобные этим data['Согласен'] = np.where(data[' Рейтинг']== 'Согласен', 1, 0) data['Не согласен'] = np.where(data['Рейтинг']== 'Не согласен', 1, 0) data['Всего'] = data[[ «Согласен», «Не согласен»]].sum(axis=1) Я хочу сделать то же самое без необходимости делать это вручную, независимо от того, сколько уникальных значений будет присутствовать в столбце «Рейтинг»

DG572 23.11.2022 17:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
4
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Здесь я помещаю логические значения на основе совпадения со значением col1...

df = pd.DataFrame({"col1": ["apple", "apple", "banana", "pineapple", "banana", "apple"]})

данные =

        col1
0      apple
1      apple
2     banana
3  pineapple
4     banana
5      apple

трансформировать:

unique_col1_val = df["col1"].unique().tolist()
for u in unique_col1_val:
    df[u] = df["col1"] == u # you need to determine how to fill these new columns
    # here we just put a bool indicating a match between new col name and col1 content ...
    # to put an int truth value use:
    # df[u] = (df["col1"] == u).astype(int)
In [72]: df
Out[72]:
        col1  apple  banana  pineapple
0      apple   True   False      False
1      apple   True   False      False
2     banana  False    True      False
3  pineapple  False   False       True
4     banana  False    True      False
5      apple   True   False      False

используя df[u] = (df["col1"] == u).astype(int):

        col1  apple  banana  pineapple
0      apple      1       0          0
1      apple      1       0          0
2     banana      0       1          0
3  pineapple      0       0          1
4     banana      0       1          0
5      apple      1       0          0

Большое спасибо, это именно то, что я искал. Могу я спросить, вместо того, чтобы использовать «Истина» и «Ложь», как я могу присвоить 1 и 0 одному и тому же.

DG572 23.11.2022 18:05

попробуй .astype(int)

LoneWanderer 23.11.2022 18:13

(кстати, вы можете пометить ответ как принятый, если считаете, что это так.)

LoneWanderer 23.11.2022 18:15

Другие вопросы по теме

Pandas Отделите категориальные и числовые функции от нескольких фреймов данных и сохраните их в новом фрейме данных
Вычисление общего количества значений на основе одного и того же идентификатора в фрейме данных pandas
Загрузка большого файла (800 МБ) с URL-адреса в корзину GCS с использованием облачной функции
Как показать текст из третьего столбца фрейма данных при наведении курсора на линейную диаграмму, состоящую из двух других столбцов?
Как сводная/сводная таблица кадра данных pandas с несколькими значениями столбца
Панды создают категориальный столбец на основе ранга в группе
Как преобразовать столбец dataframe, который содержит список словаря, в отдельные столбцы?
Используйте pandas groupby для группировки нескольких столбцов
Как применить нечеткое сопоставление к столбцу фрейма данных с несколькими списками и сохранить результаты в новом столбце
Как разделить набор данных с пиками и найти площадь под этими пиками?