28

私は、パンダでの真っ直ぐな操作だと思うことをやろうとしていますが、うまくいかないようです。

インデックスの数が異なる 2 つの pandas シリーズがあります。インデックスを共有している場合は値を追加したいと思います。それ以外の場合は、対応するインデックスを持たない値を渡したいだけです。

例えば

Sr1 = pd.Series([1,2,3,4], index = ['A', 'B', 'C', 'D'])
Sr2 = pd.Series([5,6], index = ['A', 'C'])
Sr1        Sr2
A     1    A     5
B     2    C     6
C     3
D     4

Sr1 + Sr2またはSr1.add(Sr2)与える

A     6
B   NaN
C     9
D   NaN

しかし、私が欲しいのは

A     6
B     2
C     9
D     4

BとのDSr1が渡されるだけです。

助言がありますか?

4

3 に答える 3

70

使用できますfill_value

>>> import pandas as pd
>>> Sr1 = pd.Series([1,2,3,4], index = ['A', 'B', 'C', 'D'])
>>> Sr2 = pd.Series([5,6], index = ['A', 'C'])
>>> Sr1+Sr2
A     6
B   NaN
C     9
D   NaN
>>> Sr1.add(Sr2, fill_value=0)
A    6
B    2
C    9
D    4
于 2012-09-20T00:09:18.543 に答える
5
Sr1 = pd.Series([1,2,3,4], index = ['A', 'B', 'C', 'D'])

Sr2 = pd.Series([5,6,7], index = ['A', 'C','E'])
(Sr1+Sr2).fillna(Sr2).fillna(Sr1)

fillna を使用した別のアプローチ。インデックスが一致しない場合でも、すべてのケースで機能します

于 2018-03-13T05:51:16.903 に答える