添加两个pandas.series对象
问题描述:
我正在通过“Python for Data Analysis”工作,但我不明白某个特定的功能。添加两个pandas系列对象将自动对齐索引数据,但如果一个对象不包含该索引,则它将返回为NaN。例如从书:添加两个pandas.series对象
a = Series([35000,71000,16000,5000],index=['Ohio','Texas','Oregon','Utah'])
b = Series([NaN,71000,16000,35000],index=['California', 'Texas', 'Oregon', 'Ohio'])
结果:
In [63]: a
Out[63]: Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
In [64]: b
Out[64]: California NaN
Texas 71000
Oregon 16000
Ohio 35000
当我把它们加起来我得到这个...
In [65]: a+b
Out[65]: California NaN
Ohio 70000
Oregon 32000
Texas 142000
Utah NaN
那么为什么犹他NaN值,而不是500?看来500 + NaN = 500。是什么赋予了?我错过了一些东西,请解释一下。
更新:
In [92]: # fill NaN with zero
b = b.fillna(0)
b
Out[92]: California 0
Texas 71000
Oregon 16000
Ohio 35000
In [93]: a
Out[93]: Ohio 35000
Texas 71000
Oregon 16000
Utah 5000
In [94]: # a is still good
a+b
Out[94]: California NaN
Ohio 70000
Oregon 32000
Texas 142000
Utah NaN
答
默认的方法是假设任何涉及NaN的计算给出了NaN。任何加NaN的都是NaN,NaN划分的任何东西都是NaN等。如果你想用NaN填充NaN,你必须明确地这样做(就像Dan Allan在答案中所表明的那样)。
解决:'+'操作符执行两者的联合。我需要.add()方法。 – joelotz 2013-04-24 22:20:54