Pandas применить без расширения с разделением строки - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь использовать apply для разделения нескольких столбцов строк с разделителями на 4 столбца каждый в версии 0.25.3

Используя .apply с .str.split, я получаю столбцы таких списков

import pandas as pd

df = pd.DataFrame({'A':['9;1;8;11', '2;10;8;11', '9;4;7;10'], 'B':['0;1;6;2', '2;6;6;3', '2;1;1;2']})
df.apply(lambda x: x.str.split(';'), axis=1)

вывод:

                A             B
0   [9, 1, 8, 11]  [0, 1, 6, 2]
1  [2, 10, 8, 11]  [2, 6, 6, 3]
2   [9, 4, 7, 10]  [2, 1, 1, 2]

Это наводит меня на мысль, что простое добавление result_type='expand' должно расширять списки в отдельные столбцы, как объясняется в документации ,

Передача result_type = 'expand' расширит результаты в виде списка до столбцов фрейма данных

Однако

df.apply(lambda x: x.str.split(';'), axis=1, result_type='expand')

возвращает точно такой же результат:

                A             B
0   [9, 1, 8, 11]  [0, 1, 6, 2]
1  [2, 10, 8, 11]  [2, 6, 6, 3]
2   [9, 4, 7, 10]  [2, 1, 1, 2]

Что мне здесь не хватает?

1 Ответ

1 голос
/ 04 августа 2020

str.split - это функция для серии, если нам нравится использовать ее для фрейма данных, мы можем

df=pd.concat([df[x].str.split(';',expand=True) for x in df.columns],axis=1)
Out[37]: 
   0   1  2   3  0  1  2  3
0  9   1  8  11  0  1  6  2
1  2  10  8  11  2  6  6  3
2  9   4  7  10  2  1  1  2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...