gpt4 book ai didi

python - 基于忽略缺失值的多个条件的新列

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:22 25 4
gpt4 key购买 nike

我有以下带有一些缺失值的数据框:

       A     B
0 63.0 9.0
1 NaN 35.0
2 51.0 95.0
3 25.0 11.0
4 91.0 NaN
5 2.0 47.0
6 37.0 10.0
7 NaN 88.0
8 75.0 87.0
9 92.0 21.0

我想根据以上两列的条件创建一个新列:

df['C'] = numpy.where((df['A']>55) | (df['B']>55), "Yes", "No")

这有效但没有考虑缺失值:

      A     B    C
0 63.0 9.0 Yes
1 NaN 35.0 No
2 51.0 95.0 Yes
3 25.0 11.0 No
4 91.0 NaN Yes
5 2.0 47.0 No
6 37.0 10.0 No
7 NaN 88.0 Yes
8 75.0 87.0 Yes
9 92.0 21.0 Yes

为了纠正缺失值,我必须运行以下代码:

df['C'] = numpy.where((df['A'].isnull()) | (df['B'].isnull()), numpy.nan, df['C'])

然后我得到适当的新专栏:

      A     B    C
0 63.0 9.0 Yes
1 NaN 35.0 NaN
2 51.0 95.0 Yes
3 25.0 11.0 No
4 91.0 NaN NaN
5 2.0 47.0 No
6 37.0 10.0 No
7 NaN 88.0 NaN
8 75.0 87.0 Yes
9 92.0 21.0 Yes

有没有更好的方法可以让我仅在单行代码中更正缺失值?

最佳答案

使用 np.select。条件的顺序在这里很重要,因为 np.select 选择第一个有效选项,所以您必须先进行 null 检查。

c1 = df.isnull().any(1)
c2 = df.gt(55).any(1)

df['C'] = np.select([c1, c2], [np.nan, 'Yes'], 'No')

A B C
0 63.0 9.0 Yes
1 NaN 35.0 nan
2 51.0 95.0 Yes
3 25.0 11.0 No
4 91.0 NaN nan
5 2.0 47.0 No
6 37.0 10.0 No
7 NaN 88.0 nan
8 75.0 87.0 Yes
9 92.0 21.0 Yes

关于python - 基于忽略缺失值的多个条件的新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51699376/

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