Python 熊猫系列如何用最后一个有效值填充na
我有一个熊猫系列,我想填充最后一个不是nan的值。比如说,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
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