首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python大熊猫中的任何行都有NaN值之后删除列

如何在Python大熊猫中的任何行都有NaN值之后删除列
EN

Stack Overflow用户
提问于 2020-10-09 16:43:36
回答 2查看 916关注 0票数 3

玩具示例代码

假设我跟踪了DataFrame

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
df = pd.DataFrame({"A":[11,21,31], "B":[12,22,32], "C":[np.nan,23,33], "D":[np.nan,24,34], "E":[15,25,35]})

它将返回:

代码语言:javascript
运行
复制
>>> df
    A   B     C     D   E
0  11  12   NaN   NaN  15
1  21  22  23.0  24.0  25
2  31  32  33.0  34.0  35

删除所有具有nan值的列

我知道如何删除具有nan值的所有列,如下所示:

代码语言:javascript
运行
复制
out1 = df.dropna(axis=1, how="any")

返回:

代码语言:javascript
运行
复制
>>> out1
    A   B   E
0  11  12  15
1  21  22  25
2  31  32  35

预期产出

但是,我期望的是在找到nan值之后删除所有列。在玩具示例代码中,预期的输出是:

代码语言:javascript
运行
复制
    A   B
0  11  12
1  21  22
2  31  32

问题

nanpandas DataFrame的任何行中找到之后,我如何删除所有列?

EN

Stack Overflow用户

回答已采纳

发布于 2020-10-09 16:52:13

我要做的是:

检查每个元素是否为空/不为null

  • cumulative和--列的每一行--

  • 检查每一列,跨行

  • --使用该结果作为索引器:

代码语言:javascript
运行
复制
df.loc[:, ~df.isna().cumsum(axis=1).any(axis=0)]

给我:

代码语言:javascript
运行
复制
    A   B
0  11  12
1  21  22
2  31  32
票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64284130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档