#python #pandas #numpy
#python #pandas #numpy
Вопрос:
У меня есть фрейм данных с 12 строками и 3 столбцами. Каждое значение в столбце ‘name’ может быть связано со многими значениями в столбце ‘target’. Для каждого значения также существует связанный ‘val’, который является числовой переменной. Пример:
name val target
a 6.3 la
b 3.5 le
c 10 li
d 8 lo
e 2.3 lu
f 5.6 lao
g 4.7 laoo
h 4.7 laooo
a 4.8 lo
j 1.2 le
b 1.5 re
k 9.8 la
Я хочу изменить форму моего фрейма данных, используя уникальные значения из столбцов ‘targets’ в качестве новых столбцов и добавить к каждой строке соответствующий ‘val’. Поскольку для каждого целевого объекта существует разное количество значений ‘val’, новый фрейм данных должен заполнять пустые строки нулями. Например:
la le li lo lu ...
6.3 3.5 10 8 2.3 ...
9.8 1.2 0 4.8 0 ...
Я нашел скрипт, который делает это, но было довольно сложно понять, что он делает. Возможно ли это сделать, используя всего несколько строк, используя numpy и / или pandas?
Ответ №1:
x = pd.DataFrame.from_dict(
df.groupby('target')['val'].apply(np.unique).to_dict(), 'index').T.fillna(0)
print(x)
Вывод:
la lao laoo laooo le li lo lu re
0 6.3 5.6 4.7 4.7 1.2 10.0 4.8 2.3 1.5
1 9.8 0.0 0.0 0.0 3.5 0.0 8.0 0.0 0.0