Мне нужно объединить 2 df
, A
и B
, где B
генерируется на основе groupby
другого df
, то есть C
,
B = pd.DataFrame(C.groupby('object_id').apply(
lambda x: x[['number', 'date', 'user_id', 'change']].to_dict('records')))
B.columns = ['change_history']
B['num_changes'] = B['change_history'].apply(lambda x: len(x))
# reset index to default integer index to get object_id for B
B = B.reset_index()
data = A.merge(B, how='left', on='object_id')
Мне интересно, есть ли лучший способ сделать это с точки зрения использования памяти и эффективности использования времени.
df C
object_id number date user_id change
1000001 1234 2017-01-01 ABC 6666661111
1000001 04447 2018-01-01 ABC 9999990000
1000002 <AAA>0000001 2018-02-02 DEF 3333339999
1000002 <AAA>0999999 2018-03-03 DEF 4444448888
1000003 980000 2018-04-05 DEF 5555550000
1000004 970000 2018-05-06 XYZ 3200000000
df A
object_id name
1000001 company_a
1000001 company_a
1000002 company_b
1000002 company_b
1000003 company_c
1000004 company_d