我想结合两个熊猫系列s1
和s2
。
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])
,但是这些没有给出我想要的结果。
答案 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位置中的数据均缺少结果 将丢失