Как я могу разделить столбец на несколько столбцов?

#python #pandas #dataframe

Вопрос:

У меня есть такие данные:

 d1 = pd.DataFrame({"Mother_id": 11111, "Children_id": [12476, 19684]})
d2 = pd.DataFrame({"Mother_id": 22222, "Children_id": [24153, 29654, 25417]})

d3 = pd.concat([d1, d2], axis=0)
 

Желаемый Результат:

     Mother_id   child_id_1  child_2 child_3 ....  number_of_children
(11111, 12476, 19684, nan, 2)
(22222, 24153, 29654, 25417, 3)
 

Кто-нибудь может помочь ? Спасибо.

Комментарии:

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

Ответ №1:

Вот решение с использованием pivot . Сначала он использует groupby cumcount для вычисления вспомогательного столбца с рангом детей, который будет использоваться для определения столбцов для сводной таблицы.

 (d3.assign(n=d3.groupby('Mother_id').cumcount().add(1))
   .pivot(index='Mother_id', columns='n', values='Children_id')
   .add_prefix('child_')
   .assign(n_children=lambda d: d.notna().sum(axis=1))
)
 

выход:

            child_1  child_2  child_3  n_children
Mother_id                                       
11111      12476.0  19684.0      NaN           2
22222      24153.0  29654.0  25417.0           3
 

Комментарии:

1. Спасибо, Мозуэй.

2. @scapula13. Вы должны принять этот ответ , потому что предоставленный ответ решил вашу проблему.

3. там написано, что у вас должно быть 15 репутации ?