gpt4 book ai didi

Python Pandas fillna()

转载 作者:太空宇宙 更新时间:2023-11-03 14:01:10 27 4
gpt4 key购买 nike

我有一个大型数据框,其值如下:

Name  A  B  C  D  E  F  G # Coulmns
Matt 1 n n n 5 n 5 # rows
Jake n n 2 n 3 n n
Paul 2 n 3 n n 8 n

我只想用前面的值填充 NA 值:这是通过

实现的
df.fillna(method='ffill')

这是正向填充方法,它给我一个输出:

Name  A  B  C  D  E  F  G # Coulmns
Matt 1 1 1 1 5 5 5 # rows
Jake n n 2 2 3 3 3
Paul 2 2 3 3 3 8 8

问题是我不想让它走到最后,如果后面没有更多的值就停止。请参见第 2 行,Jake,它必须停在 E 处,因为它在最后一列中没有任何值。期望的输出:

Name  A  B  C  D  E  F  G # Coulmns
Matt 1 1 1 1 5 5 5 # rows
Jake n n 2 2 3 n n
Paul 2 2 3 3 8 8 n

有办法用 pandas 做到这一点吗?

代码:

 for i in range(len(df)):
df.loc[i][1:].fillna(method='ffill',inplace=True)

最佳答案

我认为你需要:

  • set_index按第一列
  • 通过回填替换 NaN 并通过 isnull() 检查 NaN
  • 通过前向填充替换 NaN,并将 NaN 替换为 mask
  • 最后reset_index对于列的索引
<小时/>
df = df.set_index('Name')
m = df.bfill(axis=1).isnull()
df = df.ffill(axis=1).mask(m)
print (df)
Name A B C D E F G
0 Matt 1.0 1.0 1.0 1.0 5.0 5.0 5.0
1 Jake NaN NaN 2.0 2.0 3.0 NaN NaN
2 Paul 2.0 2.0 3.0 3.0 3.0 8.0 NaN

关于Python Pandas fillna(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49236464/

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