gpt4 book ai didi

python-2.7 - 我应该如何检查超过 10 列的 nan 值并选择那些具有 nan 值的行,即 keepna() 而不是 dropna()

转载 作者:行者123 更新时间:2023-12-01 00:03:04 25 4
gpt4 key购买 nike

Output = df[df['TELF1'].isnull() | df['STCEG'].isnull() | df['STCE1'].isnull()]

这是我的代码,如果列包含 nan 值而不是只选择该行,我将在此处检查。但在这里我有 10 多个专栏可以做到这一点。这将使我的代码变得庞大。有没有更短或更 pythonic 的方法来做到这一点。

df.dropna(subset=['STRAS','ORT01','LAND1','PSTLZ','STCD1','STCD2','STCEG','TELF1','BANKS','BANKL','BANKN','E-MailAddress'])

有什么方法可以得到与上述命令相反的结果。它会给我与我在上面尝试的相同的输出,但它变得很长。

最佳答案

loc 与简单的 bool 过滤器一起使用应该可以:

df = pd.DataFrame(np.random.random((5,4)), columns=list('ABCD'))
subset = ['C', 'D']
df.at[0, 'C'] = None
df.at[4, 'D'] = None
>>> df
A B C D
0 0.985707 0.806581 NaN 0.373860
1 0.232316 0.321614 0.606824 0.439349
2 0.956236 0.169002 0.989045 0.118812
3 0.329509 0.644687 0.034827 0.637731
4 0.980271 0.001098 0.918052 NaN

>>> df.loc[df[subset].isnull().any(axis=1), :]
A B C D
0 0.985707 0.806581 NaN 0.37386
4 0.980271 0.001098 0.918052 NaN

df[subset].isnull() 返回是否有任何子集列具有 NaN 的 bool 值。

>>> df[subset].isnull()
C D
0 True False
1 False False
2 False False
3 False False
4 False True

.any(axis=1) 将返回 True 如果行中的任何值(因为 axis=1,否则列)为 True。

>>> df[subset].isnull().any(axis=1)
0 True
1 False
2 False
3 False
4 True
dtype: bool

最后,使用loc(行,列)定位满足 bool 条件的行。 : 符号表示选择所有内容,因此它选择第 0 行和第 4 行的所有列。

关于python-2.7 - 我应该如何检查超过 10 列的 nan 值并选择那些具有 nan 值的行,即 keepna() 而不是 dropna(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33118600/

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