Я хотел бы создать новые столбцы в моем кадре данных, используя уникальные значения из другого столбца, например
Столбец 1 имеет следующие значения:
Apple
Apple
Banana
Strawberry
Strawberry
Strawberry
Когда я проверяю уникальные значения в столбце 1, вывод будет таким:
Apple
Banana
Strawberry
Теперь я хочу использовать эти три значения для создания столбцов с именами «Яблоко», «Банан», «Клубника», и я хочу, чтобы код оставался динамическим, чтобы адаптироваться к тому количеству уникальных значений, которое присутствует в столбце 1.
Я новичок в python, буду признателен за любую помощь!
До сих пор я получал этот вывод, вручную создавая новые столбцы в наборе данных, мне нужно, чтобы это происходило автоматически в зависимости от уникальных значений в столбце 1.
Если это датафрейм pandas, добавьте этот тег к своему вопросу.
Отвечает ли это на ваш вопрос? Pandas Python: как создать несколько столбцов из списка (я знаю, что этот вопрос касается добавления столбцов из списка, но идея одинакова для любого итерируемого объекта)
Вот пример данных и кода: Мой исходный столбец («Рейтинг») имеет два значения «Согласен» и «Не согласен». Я вручную создаю новые столбцы, подобные этим data['Согласен'] = np.where(data[' Рейтинг']== 'Согласен', 1, 0) data['Не согласен'] = np.where(data['Рейтинг']== 'Не согласен', 1, 0) data['Всего'] = data[[ «Согласен», «Не согласен»]].sum(axis=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 одному и тому же.
попробуй .astype(int)
(кстати, вы можете пометить ответ как принятый, если считаете, что это так.)
предоставить минимальный воспроизводимый код в текстовом формате (без скриншотов)