gpt4 book ai didi

python-3.x - 在 Pandas 数据框行中仅保留第一组非 nan 值

转载 作者:行者123 更新时间:2023-12-04 23:11:41 26 4
gpt4 key购买 nike

如果我有一个像这样的 Pandas 数据框:

      A     B     C     D     E     F
0 1 NaN NaN NaN NaN NaN
1 2 5 6 1 NaN 1
2 2 3 NaN 1 4 1
3 5 5 2 1 2 1
4 NaN 2 3 4 1 2
5 NaN NaN 2 NaN NaN 1

我如何只保留第一组非 NaN 值,以便获得如下所示的 Pandas 数据框:
      A     B     C     D     E     F
0 1 NaN NaN NaN NaN NaN
1 2 5 6 1 NaN NaN
2 2 3 NaN NaN NaN NaN
3 5 5 2 1 2 1
4 NaN 2 3 4 1 2
5 NaN NaN 2 NaN NaN NaN

消除 NaN 值之后的任何值。

最佳答案

我们可以创建一个面具。有点难解释所以我慢慢来

m = (df.notnull().cummax(1) & df.isnull()).cummax(1)
df.mask(m)
A B C D E F
0 1.0 NaN NaN NaN NaN NaN
1 2.0 5.0 6.0 1.0 NaN NaN
2 2.0 3.0 NaN NaN NaN NaN
3 5.0 5.0 2.0 1.0 2.0 1.0
4 NaN 2.0 3.0 4.0 1.0 2.0
5 NaN NaN 2.0 NaN NaN NaN

解释
# Row-wise True filling after/including first non-null value.
df.notnull().cummax(1)
A B C D E F
0 True True True True True True
1 True True True True True True
2 True True True True True True
3 True True True True True True
4 False True True True True True
5 False False True True True True

# Adding the `&` condition ensures first True value for each row is after the first
# non-null group
df.notnull().cummax(1) & df.isnull()
A B C D E F
0 False True True True True True
1 False False False False True False
2 False False True False False False
3 False False False False False False
4 False False False False False False
5 False False False True True False

# We now turn everything to True after the first, row-wise
(df.notnull().cummax(1) & df.isnull()).cummax(1)
A B C D E F
0 False True True True True True
1 False False False False True True
2 False False True True True True
3 False False False False False False
4 False False False False False False
5 False False False True True True

关于python-3.x - 在 Pandas 数据框行中仅保留第一组非 nan 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974275/

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