Pandas: 基于阈值条件删除列

14 浏览
0 Comments

Pandas: 基于阈值条件删除列

我必须解决这个问题:\n目标:删除大部分行缺失的列\n输入:\n1. 数据框 df:Pandas 数据框\n2. 阈值:确定将删除哪些列。如果阈值为0.9,则将删除缺失值达到90%的列\n输出:\n1. 删除列的数据框 df(如果没有删除列,则返回相同的数据框)\nExcel 文档截图\n我已经编写了以下代码:\n

class variableTreatment():
    def drop_nan_col(self, df, threshold): 
        self.threshold = threshold
        self.df = df
        for i in df.columns:
            if (float(df[i].isnull().sum())/df[i].shape[0]) > threshold:
                df = df.drop(i)

\n我必须使用 \"self、dr 和 threshold\",不能添加更多内容。代码必须通过以下测试案例:\n

import pandas as pd
import numpy as np
df = pd.read_excel('CKD.xlsx')
VT = variableTreatment()
VT
VT.drop_nan_col(df, 0.9).head()

\n当我运行 VT.drop_nan_col(df, 0.9).head() 时,我不能更改这行代码,我得到以下错误:\n

KeyError: "['yls'] not found in axis"

\n如果我将 shape 改为 0 而不是 1,我认为这对于我正在做的不正确,我得到以下错误:\n

IndexError: tuple index out of range

\n有人可以帮我理解如何修复这个问题吗?

0
0 Comments

Pandas: Remove Column Based on Threshold Criteria

在使用Pandas处理数据时,有时候需要根据一定的阈值条件来删除某些列。然而,在实际操作中可能会遇到一些问题,下面我们来看看具体的原因以及解决方法。

在给定的代码中,我们可以看到一行代码df = df.drop(i),这是为了删除某一行数据。然而,根据问题的描述,我们需要删除的是列而不是行。因此,正确的代码应该是df = df.drop(i, axis=1),其中axis=1表示按列删除。

为了更好地理解这个错误,我们可以参考一个Stack Overflow上的答案https://stackoverflow.com/a/44931865/5184851。这个答案与我们遇到的问题类似,它提供了正确的解决方案。

此外,为了正确使用.head()函数,drop_nan_col(...)函数需要返回一个DataFrame而不是其他类型的对象。具体来说,应该返回df

在尝试了上述解决方法后,我们可能会遇到另一个错误:AttributeError: 'NoneType' object has no attribute 'head'。这是一个不同的错误,可能与我们没有正确返回DataFrame对象有关。

通过检查更新后的答案,我们可能会找到解决这个问题的线索。请参考最新的答案以获得更多帮助。

通过这篇文章,我们了解到了在使用Pandas删除某些列时可能遇到的问题以及相应的解决方法。希望这些信息对你有所帮助!

0