添加不同指数的pandas系列而不获取NaNs

2024-09-28 17:24:40 发布

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

我想在大熊猫身上做一个直截了当的手术,但似乎做不到。

我有两个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 + Sr2Sr1.add(Sr2)给出

A     6
B   NaN
C     9
D   NaN

但我想要的是

A     6
B     2
C     9
D     4

其中,Sr1BD值只是一起传递的。

有什么建议吗?


Tags: addpandas数量indexnan建议seriespd
3条回答

使用fillna()的解决方案:

>>> 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).fillna(Sr1 + 0)
A    6.0
B    2.0
C    9.0
D    4.0
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的另一种方法。当索引不匹配时,它将在所有情况下工作

您可以使用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

相关问题 更多 >