#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 репутации ?