Python 熊猫系列如何用最后一个有效值填充na

Python 熊猫系列如何用最后一个有效值填充na,python,pandas,nan,Python,Pandas,Nan,我有一个熊猫系列,我想填充最后一个不是nan的值。比如说, a=pd.Series({1: 1918, 2: 1928, 3: np.nan, 4: np.nan, 5: np.nan, 6: 1853, 7: 1831}) Out[113]: 1 1918 2 1928 3 NaN 4 NaN 5 NaN 6 1853 7 1831 dtype: float64 我想要的是: a=pd.Series({1: 1918, 2: 1928, 3

我有一个熊猫系列,我想填充最后一个不是nan的值。比如说,

a=pd.Series({1: 1918,  2: 1928, 3: np.nan, 4: np.nan, 5: np.nan, 6: 1853, 7: 1831})
Out[113]: 
1    1918
2    1928
3     NaN
4     NaN
5     NaN
6    1853
7    1831
dtype: float64
我想要的是:

a=pd.Series({1: 1918,
2: 1928,
3: np.nan,
4: np.nan,
5: 1928,
6: 1853,
7: 1831})
有没有一种优雅的方法可以做到这一点?我试着看fillna,但它没有我想要的选择。它要么用1928填充值3,要么用1853填充值5(使用limit=1),但这不是我想要的。最终目标是基于此数据进行返回序列,当值为nan时,使用最后一个可用的非nan数据。因此,spot 61853/1928-1应该有一个新的返回序列。

您可以通过和创建遮罩,然后使用和:


非常感谢。我实际上是在使用一个数据帧(尽管我在问题中提到了系列)。所以我刚删除了.loc,它就工作了。
import pandas as pd
import numpy as np

a=pd.Series({1: 1918,  2: 1928, 3: np.nan, 4: np.nan, 5: np.nan, 6: 1853, 7: 1831})
print a
1    1918
2    1928
3     NaN
4     NaN
5     NaN
6    1853
7    1831
dtype: float64

print ~(pd.isnull(a) & pd.isnull(a.shift(-1)))
1     True
2     True
3    False
4    False
5     True
6     True
7     True
dtype: bool

a.loc[ ~(pd.isnull(a) & pd.isnull(a.shift(-1)))] = a.fillna(method='ffill')
print a
1    1918
2    1928
3     NaN
4     NaN
5    1928
6    1853
7    1831
dtype: float64