Series.update()也使用NA值?

时间:2015-05-06 21:39:02

标签: python pandas

some_series.update(other_series)将使用some_series的匹配(按索引)值覆盖other_series上的所有值。但是,它会跳过所有NA值,如无。

如果我想从some_series更新other_series,并且还应用NA值,我应该使用什么?

澄清一下,这就是我想要的:

In [197]: some_series
Out[197]: 
0    1
1    2
dtype: int64

In [198]: other_series
Out[198]: 
0    None
dtype: object

In [203]: some_series  # after overriding it with other_series:
Out[203]: 
0    None
1       2
dtype: object

3 个答案:

答案 0 :(得分:1)

我不确定这是最好的方式,但这是一种方式。您必须确保要更新的系列包括另一个系列(例如使用reindex)。

map (\c -> if isLetter c then c else ' ')

注意:如果没有这个阶段,如果您只是尝试更新s,那么您将获得KeyError。

In [11]: s
Out[11]:
0    1
1    2
dtype: int64

In [12]: t
Out[12]:
1   NaN
2     3
3     4
dtype: float64

In [13]: res = s.reindex(s.index.union(t.index))

更新只是 s的索引使用交集:

In [14]: res.loc[t.index] = t

In [25]: res
Out[25]:
0     1
1   NaN
2     3
3     4
dtype: float64

答案 1 :(得分:1)

以下方法可行,它使用loc和其他系列索引来屏蔽我们要覆盖的元素:

In [106]:

some_series = pd.Series([1, 2])
other_series = pd.Series([None])
some_series.loc[other_series.index] = other_series
some_series
Out[106]:
0   NaN
1     2
dtype: float64

在这种情况下,loc实际上是不必要的

答案 2 :(得分:0)

some_series[other_series.index] = other_series