2016-11-12 59 views
2

我只是想知道,如果有人有以下問題更好的解決方案更大的數據幀:熊貓和數據幀到已含有相同的索引與相同的列名

我有兩個熊貓DataFrame

import pandas as pd 
df1 = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9]], columns=list('ABC')) 
df2 = pd.DataFrame([[10, 20, 30], [40, 50, 60]], columns=list('ABC')) 

    A B C 
0 1 2 3 
1 4 5 6 
2 7 8 9 


    A B C 
0 10 20 30 
1 40 50 60 

我只想基於指數與同列求和df2df1

A B C 
0 11 22 33 
1 44 55 66 
2 7 8 9 

我的解決方案,使f ar:

df_merge = df1.merge(df2, how='inner', left_index=True, right_index=True, suffixes=['_l', '_r']) 
for elt in list('ABC'): 
    df_merge[elt] = df_merge[elt + '_l'] + df_merge[elt + '_r'] 
    df_merge.drop([elt + '_l', elt + '_r'], axis=1, inplace=True) 
df1.update(df_merge) 

感謝您的幫助!

回答

3

使用df.add(df2)相當於df1 + df2,而是讓你填寫的值,其中指數和列不對齊。

>>> df1.add(df2, fill_value=0) 
    A B C 
0 11 22 33 
1 44 55 66 
2 7 8 9 
+0

謝謝!我認爲它會給我索引3的零線。 – Mamath

0

您可以使用concatgroupby

pd.concat((df1, df2)).groupby(level=0).sum() 

    A B C 
0 11 22 33 
1 44 55 66 
2 7 8 9 
相關問題