gpt4 book ai didi

python - Pandas - 填充 NaN 的变体 - 什么是优雅和 pythonic 的方式来做到这一点?

转载 作者:太空宇宙 更新时间:2023-11-04 10:24:57 30 4
gpt4 key购买 nike

晚上好

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

填充第一个 N nans 的漂亮的 pythonic 方法是什么?有一个值和剩余的nans与另一个

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

谢谢

   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

关于python - Pandas - 填充 NaN 的变体 - 什么是优雅和 pythonic 的方式来做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29906512/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com