结合两个熊猫系列?

时间:2018-11-20 17:04:50

标签: python pandas

我想结合两个熊猫系列s1s2

s1 = pd.Series([2,5,5], index=['a','b','c'])
s2 = pd.Series([2,4,7], index=['a','b','d'])

这是我想要的结果:

s3 = pd.Series([4,9,5,7], index=['a','b','c','d'])

a    4
b    9
c    5
d    7
dtype: int64

我已经尝试过+运算符s1.append(s2)pd.join([s1,s2]),但是这些没有给出我想要的结果。

5 个答案:

答案 0 :(得分:5)

似乎add会在这里工作

s1.add(s2,fill_value=0)
Out[145]: 
a    4.0
b    9.0
c    5.0
d    7.0
dtype: float64

答案 1 :(得分:1)

脾气暴躁的np.add.at

这有点荒谬,但我想展示一些不同的东西

import numpy as np
import pandas as pd
from itertools import chain

k, v = zip(*chain(*map(pd.Series.items, [s1, s2])))
i, r = pd.factorize(k)
out = np.zeros(len(r), dtype=int)
np.add.at(out, i, v)
pd.Series(out, r)

a    4
b    9
c    5
d    7
dtype: int64

答案 2 :(得分:0)

只需使用pandas.Series.add

s3 = s1.add(s2, fill_value=0)

#result
a    4.0
b    9.0
c    5.0
d    7.0
dtype: float64

答案 3 :(得分:0)

替代add

pd.concat((s1,s2), axis=1, sort=True).sum(1, min_count=1)

输出:

a    4.0
b    9.0
c    5.0
d    7.0
dtype: float64

答案 4 :(得分:0)

直接从pandas.Series.add有一个简单的答案,您可以从这里获取

在这里供您使用。.

第一个数据框:

>>> s1
a    2
b    4
c    5
dtype: int64

第二个数据框:

>>> s2
a    2
b    4
d    7
dtype: int64

简单的DataFrame.add + fill_value,在文档中对此进行了说明:

>>> s1.add(s2, fill_value=0)
a    4.0
b    8.0
c    5.0
d    7.0
dtype: float64

文档:

  

fill_value:无或浮点值,默认为无

     

填充现有的缺失(NaN)值,以及填充所需的任何新元素   成功对齐DataFrame,并在计算前使用此值。如果   两个对应的DataFrame位置中的数据均缺少结果   将丢失