2016-09-02 39 views
0

我有不同的尺寸就这样两个不同的数据帧:合并,总和和删除重复与熊猫

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'] 

我用熊猫尝试在“df_final”合并它们,但我想总结具有相同'ID'的'Total Events'的值,最后我希望在ID中有一个没有重复的'df_final'。

我想:

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 

是否有一个优雅的方式来做到这一点?从使用pd.concat代码

+0

请提供[MCVE]。 – IanS

+0

我试图用一个例子来改进问题。谢谢。 – Thabra

+0

@Thabra真的 - 'df_ *'变量根本不是数据框,而是列表;第二个甚至没有正确分隔。 –

回答

0

改性溶液:使用pd.merge

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 

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 
+0

非常感谢!但我面临着这个问题。没有解决方案的工作。我收到 回溯(最近通话最后一个): 文件 “video_tempo_analise_julho.py” 25行,在 DF2 = pd.concat([df_web,df_app])GROUPBY([0,1],as_index =假)[2] .sum() 文件“/home/tha/anaconda2/lib/python2.7/site-packages/pandas/core/generic.py”,第3778行,在组中由 ** kwargs) .. 。 KeyError:0 – Thabra

+0

0,1,2是列名将其替换为上面提到的列名称。 – shivsn

+0

是的,我注意到了。 但是我的最终文件仍然有重复...并且它不会将具有相同编号的值相加 – Thabra