熊猫 - 填充 NaN 的变化 - 什么是优雅而蟒蛇的方式?



晚上好

在下面的数据帧中,列 'c' 具有一些 NaN

用一个值填充前 N nans并用另一个值填充剩余nans是一种不错的 pythonic 方法

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

谢谢

   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

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

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

你可以使用fillna,这需要一个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

相关内容

  • 没有找到相关文章