我有两个不同大小的数据框,如下所示:
df_web = (['Event Category', 'ID', 'Total Events',
'Unique Events', 'Event Value', 'Avg. Value'])
df_app = (['Event Category', 'ID', 'Total Events',
'Unique Events', 'Event Value', 'Avg. Value']
我正在使用pandas尝试将它们合并到一个' df_final'中,但我想总结一下' Total Events'具有相同的ID' ,最后我想要一个' df_final' ID中没有重复。
我试过了:
df_final_analysis = df_web.groupby(['Event Category', 'ID', 'Total Events',
'Unique Events', 'Event Value', 'Avg. Value'],
as_index=False)['Total Events'].sum()
但它并没有给我我想要的结果。
例如:
df_web
Video A 10
Video B 5
Video C 1
Video F 1
Video G 1
Video H 1
对于df_app:
Video A 15
Video D 3
Video C 1
对于我想要的df_final_analysis:
Video A 25
Video B 5
Video D 3
Video C 2
Video F 1
Video G 1
Video H 1
有优雅的方法吗?
答案 0 :(得分:0)
使用pd.concat修改了代码中的解决方案:
In [46]: df
Out[46]:
0 1 2
0 Video A 10
1 Video B 5
2 Video C 1
3 Video F 1
4 Video G 1
5 Video H 1
In [47]: df1
Out[47]:
0 1 2
0 Video A 15
1 Video D 3
2 Video C 1
In[59]:pd.concat([df,df1]).groupby([0,1],as_index=False)[2].sum()
Out[59]:
0 1 2
0 Video A 25
1 Video B 5
2 Video C 2
3 Video D 3
4 Video F 1
5 Video G 1
6 Video H 1
使用pd.merge:
In [60]: pd.merge(df,df1,how='outer').groupby([0,1],as_index=False)[2].sum()
Out[60]:
0 1 2
0 Video A 25.0
1 Video B 5.0
2 Video C 1.0
3 Video D 3.0
4 Video F 1.0
5 Video G 1.0
6 Video H 1.0