Pandas разнести несколько столбцов - PullRequest
4 голосов
/ 08 июля 2020

У меня есть DF с несколькими столбцами. Два столбца - это список с одинаковым размером (col2 и col3 - это список. Len в списке одинаковое).

Моя цель - перечислить каждый элемент в отдельной строке.

Я могу использовать df.explode(). но он принимает только один столбец. Однако я хочу, чтобы пара из двух столбцов была «разнесена». Если я сделаю df.explode('col2'), а затем df.explode('col3'), получится 9 строк вместо 3.

Исходный DF

col0      col1        col2        col3
1       aa          [1,2,3]     [1.1,2.2,3.3]
2       bb          [4,5,6]     [4.4,5.5,6.6]
3       cc          [7,8,9]     [7.7,8.8,9.9]
3       cc          [7,8,9]     [7.7,8.8,9.9]

End DataFrame

id      col1        col2        col3
1       aa          1           1.1
1       aa          2           2.2
1       aa          3           3.3
2       bb          4           4.4
2       bb          5           5.5
2       bb          6           6.6
3       cc          ...         ...

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

1 Ответ

3 голосов
/ 08 июля 2020

Вы можете установить col1 в качестве индекса и применить pd.Series.explode по столбцам:

df.set_index('col1').apply(pd.Series.explode).reset_index()

   col1 col2 col3
0    aa    1  1.1
1    aa    2  2.2
2    aa    3  3.3
3    bb    4  4.4
4    bb    5  5.5
5    bb    6  6.6
6    cc    7  7.7
7    cc    8  8.8
8    cc    9  9.9
9    cc    7  7.7
10   cc    8  8.8
11   cc    9  9.9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...