Изменить форму панд данных, используя список уникальных значений - PullRequest
1 голос
/ 14 марта 2019

У меня есть датафрейм с 12 строками и 3 столбцами. Каждое значение в столбце «имя» может быть связано со многими значениями в столбце «цель». Для каждого значения также есть связанный '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

Я хочу изменить свой фрейм данных, используя уникальные значения из столбцов 'target' в качестве новых столбцов, и добавить к каждой строке соответствующий '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 Ответ

1 голос
/ 14 марта 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...