我试图弄清楚Panda是否在一起添加两个系列时,会自动匹配索引,或者它是否只是按元素位置添加。如果只是按位置,有没有办法让它添加索引?我看过合并,但我不太清楚这种情况下的密钥是否可以作为两者的索引......
例如,如果我做了DFs:
df1 = index value
0 10
1 12
2 15
4 20
df2 = index value
0 10
1 10
3 10
4 10
我要添加df1[total] = df1[value] + df2[value] =
df1 = index value
0 20
1 22
2 15
3 10
4 30
提前感谢您的帮助!
答案 0 :(得分:3)
由于pandas中有intrinsic data alignment,您可以将add
与fill_value=0
一起使用,它会根据索引对齐对这两个系列进行求和。
df1.add(df2,fill_value=0)
输入:
df1 = pd.Series([10]*4,index=[0,1,3,4])
df2 = pd.Series([10,12,15,20], index=[0,1,2,4])
df1.add(df2,fill_value=0)
输出:
0 20.0
1 22.0
2 15.0
3 10.0
4 30.0
dtype: float64
答案 1 :(得分:1)
pd.concat([df1,df2], axis=1).sum(axis=1)
pd.concat
将合并2个(或更多)帧并基于索引进行匹配。 sum(axis=1)
只是对行进行求和。
#create the example data
df1 = pd.DataFrame({'index':[0,1,2,4],'value':[10,12,15,20]}).set_index('index')
df2 = pd.DataFrame({'index':[0,1,3,4],'value':[10,10,10,10]}).set_index('index')
以上将给你:
In [7]: pd.concat([df1,df2],axis=1).sum(axis=1)
Out[7]:
index
0 20.0
1 22.0
2 15.0
3 10.0
4 30.0
dtype: float64