2017-09-04 153 views
0

我有2个dataframes列SUMM价值,我需要Concat的它熊猫:CONCAT dataframes和

DF1

ac    Hi-Tech Безопасность Hi-Tech Интернет Hi-Tech Компьютеры 
g0erl94ixwwzetju 0      3313    8 
g0f6b7yuyj9vctww 0      0     0 
g0ibu3bokld1ea9e 0      12,5    61  

DF2

ac    Hi-Tech Безопасность Hi-Tech Интернет Hi-Tech Интерфейс 
g0erl94ixwwzetju 0      3,666666667  0 
g0f6b7yuyj9vctww 0      0     0 
g0ibu3bokld1ea9e 0      8,5    0 

欲望输出

ac    Hi-Tech Безопасность Hi-Tech Интернет Hi-Tech Интерфейс Hi-Tech Компьютеры 
g0erl94ixwwzetju 0      3316,666666667 0     8 
g0f6b7yuyj9vctww 0      0     0     0 
g0ibu3bokld1ea9e 0      21    0     61    

我试过

df = pd.merge(df1, df2, on='ac') 

但它从第一个数据帧返回数据帧,而不是summ。 我该如何解决这个问题?

+1

'df_out = df1 + df2' –

+0

@cᴏʟᴅsᴘᴇᴇᴅ它返回我空数据框的数据帧 –

+0

所有的列浮动或是他们的字符串?特别是3316,666 .... –

回答

1

我认为你需要add与参数fill_value=0,但首先replace,.和转换为float S:

df11 = df1.set_index('ac').replace(',','.', regex=True).astype(float) 
df22 = df2.set_index('ac').replace(',','.', regex=True).astype(float) 
df = df11.add(df22, fill_value=0).fillna(0).reset_index() 
print (df) 
       ac Hi-Tech Hi-Tech Безопасность Hi-Tech Интернет \ 
0 g0erl94ixwwzetju  0.0     0.0  3316.666667 
1 g0f6b7yuyj9vctww  0.0     0.0   0.000000 
2 g0ibu3bokld1ea9e  0.0     0.0   21.000000 

    Hi-Tech Компьютеры Интерфейс 
0     8.0  0.0 
1     0.0  0.0 
2    61.0  0.0 

另一种解决方案是在read_csv代替replaceastype使用参数decimal=','

+0

它是union数据帧,但不是sum。我有两列所有列。 –

+0

我觉得用''代替''',而不是''。所以需要先替换 – jezrael

+0

这很奇怪。在实际数据中,df1有72列,df2有114列。但在结果DF我有184.你可以看到我的数据框,如果我把它发送给你的电子邮件? –