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

排除某列具有NA值的行[重复]

濮景龙
2023-03-14

这是我的数据样本

我编写了以下代码,它删除了所有分类列(例如MSZoning)。但是,一些非类别列具有na值。如何将它们从我的数据集中排除。

def main():
    print('Starting program execution')
    iowa_train_prices_file_path='C:\\...\\programs\\python\\kaggle_competition_iowa_house_prices_train.csv'
    iowa_file_data = pd.read_csv(iowa_train_prices_file_path)
    print('Read file')
    
    model_random_forest = RandomForestRegressor(random_state=1)
    features = ['MSSubClass','MSZoning',...]
    y = iowa_file_data.SalePrice
    # every colmn except SalePrice
    X = iowa_file_data.drop('SalePrice', axis = 1)
    #The object dtype indicates a column has text (hint that the column is categorical)
    X_dropped = X.select_dtypes(exclude=['object'])
    print("fitting model")
    model_random_forest.fit(X_dropped, y)

    print("MAE of dropped categorical approach");


pd.set_option('display.max_rows', 500)
pd.set_option('display.max_columns', 500)
pd.set_option('display.width', 1000)
main()

当我运行程序时,我得到错误valueerror:输入包含NaN、infinity或一个对dtype('float32')来说太大的值,我认为这是由于naID=8造成的。

问题1-我如何完全删除这些行问题2-这些列的类型是什么,大部分是NO。但两者之间有短信吗?我想我将执行打印(“x types”,type(x.columns)),但这并没有给出结果

共有1个答案

宫俊才
2023-03-14

若要移除NAN,可以用另一个值替换它们。使用零是常见的做法。

iowa_file_data = iowa_file_data.fillna(0)

如果仍要移除整个列,请使用

iowa_file_data = iowa_file_data.dropna(axis='columns')

如果要移除整行,请使用

iowa_file_data = iowa_file_data.dropna()
 类似资料:
  • 问题内容: 我必须清理具有重复行的表: 一个可能具有多个值: 我想对整个表执行一个查询,并删除和重复的所有行。在上面的示例中,删除后,我只想剩下1、2、4和5。 问题答案: ;WITH x AS ( SELECT id, gid, url, rn = ROW_NUMBER() OVER (PARTITION BY gid, url ORDER BY id) FROM dbo.table ) SEL

  • 我正在考虑使用lambda和Pipeline。任何能给出提示的人都将不胜感激! 多谢!

  • 对于每个组A、B、C、D,每次组合y、z出现在组末尾时,我都想删除b列中的值z。 如果我们有 a==“C”的情况,其中 b 值是 y,z,z,z,z,我想删除所有 z。但是,在 a==“D” 中,由于 x 是最后一个值,因此无需更改任何内容。 结果如下所示: 通过在< code>dplyr中进行分组,我可以确定每个值在A中最后出现的位置,因此< code>a=="A"中描述的基本情况不成问题。对于

  • 我想删除a列和b列中的空值行。我已设法找到具有以下内容的行: 如何删除这些行?

  • 我是相对较新的python,并试图获得列具有特定值的行。 下面是我的代码示例 然而,当我运行这个我得到一个错误TypeError: ufunc'bitwise_and'不支持的输入类型,和输入不能安全强制任何支持的类型根据铸造规则"安全" 有人知道我为什么会出现这个错误吗?我可以做些什么来返回特定的值?任何帮助都将不胜感激!

  • 我有一个包含17列(A列到S列)的excel工作表。A列包含ID号,C列是日期列,F列包含时间格式的值(hh: mm)。对于同一个日期/天,一些ID号在F列中包含两个值-通常是一个高数字(多小时和分钟)和一个低数字(几分钟)。如果有这样的重复,我希望从工作表中删除包含F列中低值的整行。 我尝试了Excel的“板载”删除重复项功能,但没有成功。然后我遇到了这段VBA代码,它删除了包含最高值的整个重复