gpt4 book ai didi

python - 如果特定列的一个值是 NaN,有没有办法使用 ffill 替换整个 pandas 数据帧行?

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

我正在尝试对某些行均为 NaN 的数据框进行排序。我想用 ffill 填充这些。我目前正在尝试这个,虽然我觉得它是一些命令的不匹配

df.loc[df['A'].isna(), :] = df.fillna(method='ffill')

这给出了一个错误: AttributeError: 'NoneType' 对象没有属性 'fillna'

但如果其中一列是 NaN,我想使用 ffill 过滤我填充的 ​​NaN。即

     A    B      C     D   E
0 45 88 NaN NaN 3
1 62 34 2 86 NaN
2 85 65 11 31 5
3 NaN NaN NaN NaN NaN
4 90 38 34 93 8
5 0 94 45 10 10
6 58 NaN 23 60 11
7 10 32 5 15 11
8 NaN NaN NaN NaN NaN

所以我只想填充一行 IFF A 的值为 NaN,同时将 C,0 和 D,0 保留为 NaN。提供以下数据框

     A    B      C     D   E
0 45 88 NaN NaN 3
1 62 34 2 86 NaN
2 85 65 11 31 5
3 85 65 11 31 5
4 90 38 34 93 8
5 0 94 45 10 10
6 58 NaN 23 60 11
7 10 32 5 15 11
8 10 32 5 15 11

所以澄清一下,唯一被 ffill 替换的行是 3,8,原因是第 3 行和第 8 行中 A 列的值是 NaN谢谢

---更新---当我调试和评估表达式时:df.loc[df['A'].isna(), :]

我明白了

3   NaN   NaN   NaN   NaN  NaN
8 NaN NaN NaN NaN NaN

所以我假设这里发生的事情是,然后我尝试对这个仅包含 3 和 8 的新数据框进行填充,显然我不能用 NaN 填充 NaN。

最佳答案

仅更改以 nan 开头的行的值

df.loc[df['A'].isna(), :] = df.ffill().loc[df['A'].isna(), :]

A B C D E
0 45.0 88.0 NaN NaN 3.0
1 62.0 34.0 2.0 86.0 NaN
2 85.0 65.0 11.0 31.0 5.0
3 85.0 65.0 11.0 31.0 5.0
4 90.0 38.0 34.0 93.0 8.0
5 0.0 94.0 45.0 10.0 10.0
6 58.0 NaN 23.0 60.0 11.0
7 10.0 32.0 5.0 15.0 11.0
8 10.0 32.0 5.0 15.0 11.0

关于python - 如果特定列的一个值是 NaN,有没有办法使用 ffill 替换整个 pandas 数据帧行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58896118/

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