Python 熊猫-填充NaN的变异-什么';这是一个优雅的和蟒蛇式的方法吗?

Python 熊猫-填充NaN的变异-什么';这是一个优雅的和蟒蛇式的方法吗?,python,pandas,Python,Pandas,晚上好 在下面的数据框中,'c'列有几个N 用一个值填充第一个Nnans,用另一个值填充剩余的nans是一种很好的python方法 (示例:用值10填充前3个nan,用值20填充其余2个nan) 谢谢 a b c a 5 5 NaN b 5 8 8 c 0 1 NaN d 8 5 6 e 1 6 NaN f 2 5 8 g 6 5 5 h 0 1 3 i 7 3 NaN j 2 6 NaN 编辑I-这是一种(非python

晚上好

在下面的数据框中,
'c'
列有几个N

用一个值填充第一个N
nans
,用另一个值填充剩余的
nans
是一种很好的python方法

(示例:用值
10
填充前3个
nan
,用值
20
填充其余2个
nan

谢谢

   a  b   c
a  5  5 NaN
b  5  8   8
c  0  1 NaN
d  8  5   6
e  1  6 NaN
f  2  5   8
g  6  5   5
h  0  1   3
i  7  3 NaN
j  2  6 NaN
编辑I-这是一种(非pythonic)方式:

您可以使用,这需要一个
限制
参数:

In [75]:

df = df.fillna(10,limit=3)
df = df.fillna(20)
df
Out[75]:
   a  b   c
a  5  5  10
b  5  8   8
c  0  1  10
d  8  5   6
e  1  6  10
f  2  5   8
g  6  5   5
h  0  1   3
i  7  3  20
j  2  6  20
如果您喜欢单行程序,可以将调用链接到
fillna

In [80]:

df = df.fillna(10,limit=3).fillna(20)
df
Out[80]:
   a  b   c
a  5  5  10
b  5  8   8
c  0  1  10
d  8  5   6
e  1  6  10
f  2  5   8
g  6  5   5
h  0  1   3
i  7  3  20
j  2  6  20
您可以使用,这需要一个
限制
参数:

In [75]:

df = df.fillna(10,limit=3)
df = df.fillna(20)
df
Out[75]:
   a  b   c
a  5  5  10
b  5  8   8
c  0  1  10
d  8  5   6
e  1  6  10
f  2  5   8
g  6  5   5
h  0  1   3
i  7  3  20
j  2  6  20
如果您喜欢单行程序,可以将调用链接到
fillna

In [80]:

df = df.fillna(10,limit=3).fillna(20)
df
Out[80]:
   a  b   c
a  5  5  10
b  5  8   8
c  0  1  10
d  8  5   6
e  1  6  10
f  2  5   8
g  6  5   5
h  0  1   3
i  7  3  20
j  2  6  20

我认为
limit
有另一种含义(docstring表示“向前或向后填充的最大尺寸间隙”),它只是意外地在这里工作。@joris我确实对此感到好奇,所以我想会发生什么,它实现了OP的要求,我同意它似乎在一些测试后意外地工作,我同意它在这里似乎确实工作。但随后,或文件编制不正确,或文件中存在错误implementation@EdChum很有创意。您还可以将其缩短为一行:df=df.fillna(10,limit=3)。fillna(20)是的,对于使用
方法而不是
值来填充的情况,docstring描述
限制。但是,在这种情况下,将出现一个问题来清除限制的用法:我认为
限制
有另一个含义(docstring表示“向前或向后填充的最大尺寸间隙”),它只是意外地在这里起作用。@joris我确实很好奇,所以我想会发生什么,它按照OP的要求做了,我同意,在一些测试之后,它似乎确实意外地工作了,我同意它在这里似乎确实工作了。但随后,或文件编制不正确,或文件中存在错误implementation@EdChum很有创意。您还可以将其缩短为一行:df=df.fillna(10,limit=3)。fillna(20)是的,对于使用
方法而不是
值来填充的情况,docstring描述
限制。但在这种情况下,将出现一个问题来清除限制的使用: