Pandas:列中的concat数据帧和summ值

时间:2017-09-04 09:37:04

标签: python pandas

我有2个数据帧,我需要连接它

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 个答案:

答案 0 :(得分: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中使用参数decimal=','代替replaceastype