我有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。 我该如何解决这个问题?
答案 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=','
代替replace
和astype
。