什么是优雅和Python式的方法?

2024-04-26 00:19:06 发布

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

晚上好

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

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

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

谢谢

   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)方法:

nan_number = df['c'].isnull().cumsum()[df['c'].isnull()] 
df['c'][nan_number.index[nan_number<=3]] = 10
df['c'][nan_number.index[nan_number>3]] = 20

编辑二-这开始看起来更好:

nan_rows = df.index[df['c'].isnull()]
df.loc[nan_rows[:3], 'c'] = 10  
df.loc[nan_rows[3:], 'c'] = 20

Tags: 数据方法编辑示例numberdfindexnan
1条回答
网友
1楼 · 发布于 2024-04-26 00:19:06

您可以使用^{},这需要一个limit参数:

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

相关问题 更多 >