2016-09-02 67 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