У меня есть два фрейма данных. Один содержит контактную информацию для частных лиц и домашних хозяйств. Другой содержит поле идентификатора для домохозяйства, за которым следуют отдельные лица в этом домохозяйстве. Я хотел бы выбрать все записи из первого фрейма данных и вставить столбец с соответствующим идентификатором домохозяйства.
Минимальный воспроизводимый:
df1 = pd.DataFrame({'Constituent Id':['111111','222222','333333','444444','555555','666666','777777'],
'Type':['Individual','Household','Individual','Household',
'Individual','Individual','Individual'],
'Name':['Panda Smith','Panda and Python','Python Jones','Postgres Family',
'Paul Postgres','Mary Postgres','Sqlite Postgres']})
df2 = pd.DataFrame({'Account_ID':['ABCDEF','GHIJKL'],
'Household_0':['222222','444444'],
'Individual_0':['111111','555555'],
'Individual_1':['333333','666666'],
'Individual_2':['','777777']})
Результат:
>>> df1
Constituent Id Type Name
0 111111 Individual Panda Smith
1 222222 Household Panda and Python
2 333333 Individual Python Jones
3 444444 Household Postgres Family
4 555555 Individual Paul Postgres
5 666666 Individual Mary Postgres
6 777777 Individual Sqlite Postgres
>>> df2
Account_ID Household_0 Individual_0 Individual_1 Individual_2
0 ABCDEF 222222 111111 333333
1 GHIJKL 444444 555555 666666 777777
Что я хочу сделать, так это добавить столбец к df1
с Account_ID
, который применяется к каждому из лиц в учетной записи. Домохозяйства не нужны, но нормально, если я их включу.
Поскольку количество людей варьируется в каждой семье, я не мог придумать отличный способ сделать это без итерации по каждой строке. Это кажется очень не- pandas, и я уверен, что есть способ получше, возможно, сложить или что-то в этом роде.
В моем примере результат будет выглядеть так:
Constituent Id Type Name Account_ID
0 111111 Individual Panda Smith ABCDEF
1 222222 Household Panda and Python ABCDEF
2 333333 Individual Python Jones ABCDEF
3 444444 Household Postgres Family GHIJKL
4 555555 Individual Paul Postgres GHIJKL
5 666666 Individual Mary Postgres GHIJKL
6 777777 Individual Sqlite Postgres GHIJKL