Pandas столбец данных со списками списков различной длины для разных столбцов - PullRequest
2 голосов
/ 19 февраля 2020

У меня есть следующий фрейм данных:

df = pd.DataFrame({'column': [[['a', 0], ['b', 1]], [['b', 2]], [['c', 1], ['b', 2]]]})
df
    column
0   [[a, 0], [b, 1]]
1   [[b, 2]]
2   [[c, 1], [b, 2]]

Где я не знаю, какие буквы существуют, и количество списков в каждой строке варьируется. Моя цель - сделать так, чтобы это выглядело так:

     a    b    c
0    0    1    NaN
1    NaN  2    NaN
2    NaN  2    1

Первый шаг можно сделать, используя:

df['column'].apply(pd.Series)
    0       1
0   [a, 0]  [b, 1]
1   [b, 2]
2   [c, 1]  [b, 2]

Однако большая часть этой проблемы все еще остается.

Ответы [ 2 ]

3 голосов
/ 19 февраля 2020

Попробуйте это

df_final = pd.DataFrame(dict(l) for l in df.column)

Out[129]:
     a  b    c
0  0.0  1  NaN
1  NaN  2  NaN
2  NaN  2  1.0
2 голосов
/ 19 февраля 2020

Если вы используете Pandas 0.25+, вы можете использовать explode:

s  = df['column'].explode()
(pd.DataFrame(list(s.values), index=s.index)
   .set_index(0, append=True)[1]
   .unstack()
)

Выход:

0    a    b    c
0  0.0  1.0  NaN
1  NaN  2.0  NaN
2  NaN  2.0  1.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...