Pandas添加列,在索引上匹配

2024-05-23 18:01:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想弄清楚Panda's在将两个序列相加时,是在索引上自动匹配,还是只是按元素位置相加。如果只是按位置,有没有办法让它加入索引?我已经研究过合并,但我不太清楚在这种情况下,键是否可以是两者的索引。。。

例如,如果我有do 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

提前谢谢你的帮助!


Tags: 元素indexvalue情况序列pandadototal
2条回答

由于pandas中的intrinsic data alignment,您可以将addfill_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

就这样做:

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

相关问题 更多 >