当前位置: 首页 > 知识库问答 >
问题:

在pandas中,如何从数据帧中删除所有不包含至少一个NaN的列?

姬天逸
2023-03-14

我有一个数据框,其中一些列有NaN值。我想删除所有没有至少一个NaN值的列。

我可以通过创建一个充满布尔值的数据框来识别NaN值(True代替NaN值,False否则):

data.isnull()

然后,我能够通过创建一系列具有相关布尔值的列名来识别包含至少一个NaN值的列(如果列包含至少一个NaN值,False否则):

data.isnull().any(axis = 0)

当我试图使用此系列删除至少不包含一个NaN值的列时,我遇到了一个问题:删除不包含NaN值的列:

data = data.loc[:, data.isnull().any(axis = 0)]

我该怎么做?

共有2个答案

咸弘雅
2023-03-14

我使用了@piRSquared答案中的样本DF。

如果要“删除不包含至少一个NaN值的列”

In [19]: df
Out[19]:
   A    B    C
0  1  2.0  NaN
1  3  NaN  4.0
2  5  6.0  NaN

In [26]: df.loc[:, df.isnull().any()]
Out[26]:
     B    C
0  2.0  NaN
1  NaN  4.0
2  6.0  NaN
方长卿
2023-03-14

考虑数据文件<代码> df<代码>

df = pd.DataFrame([
        [1, 2, None],
        [3, None, 4],
        [5, 6, None]
    ], columns=list('ABC'))

df

   A    B    C
0  1  2.0  NaN
1  3  NaN  4.0
2  5  6.0  NaN

IIUC:

pandas
dropnathresh参数

df.dropna(1, thresh=2)

   A    B
0  1  2.0
1  3  NaN
2  5  6.0

loc布尔索引

df.loc[:, df.isnull().sum() < 2]

   A    B
0  1  2.0
1  3  NaN
2  5  6.0
 类似资料:
  • 我有如下数据帧。 输入 输出 这怎么能在python中完成

  • 我想在数据的每一列中找到的数量,这样,如果某一列的少于某个阈值,我就可以删除该列。我看了一下,但没有找到任何功能。对我来说太慢了,因为大多数值都是不同的,而且我只对计数感兴趣。

  • 问题内容: 我正在寻找一种有效的方法来从javascript数组中删除所有元素(如果它们存在于另一个数组中)。 我想对myArray进行操作以使其保持这种状态: 使用jQuery,我使用和,效果很好: 有没有一种纯Javascript方式无需循环和拼接的方法? 问题答案: 使用方法: 小改进,因为对浏览器的支持增加了: 使用arrow functions:下一个适应:

  • 我正在寻找一种有效的方法,从一个javascript数组中删除所有元素,如果它们存在于另一个数组中。 我想对myArray进行操作,使其保持这种状态: 使用jQuery,我使用和,效果很好: 有没有一种纯javascript的方法可以做到这一点,而不需要循环和拼接?

  • 问题内容: 我有一个表,表中定义了员工关系。IE 等等… 在高级ID是外键的主键表与refreence列EmpId相同的情况下,我想从该表中清除所有行而不删除任何约束。我怎样才能做到这一点? 需要像这样进行删除4、3、2、1 我怎样才能做到这一点 编辑: Jhonny的答案对我有用,但是哪个答案更有效。 问题答案: 我不知道我是否缺少某些东西,但是也许您可以尝试一下。

  • 问题内容: 我目前有一个数据框,其中包含以1和0作为值的列,我想遍历这些列并删除仅由0组成的列。到目前为止,这是我尝试过的: 在哪几年是我正在分析的不同年份的数据帧的列表,其中包括其中包含一个的列,而零则是包含所有零的列的列表。是否有更好的方法根据条件删除列?由于某些原因,我必须检查一列是否也位于零列表中,并将它们从零列表中删除,以获得所有零列的列表。 问题答案: df.loc[:, (df !=