为了账号安全,请及时绑定邮箱和手机立即绑定

基于值比较从数据框中删除行时出错

基于值比较从数据框中删除行时出错

jeck猫 2021-09-25 09:36:10
我在数据框列中有以下唯一值。['1473' '1093' '1346' '1324' 'NA' '1129' '58' '847' '54' '831' '816']我想删除'NA'此列中的行。testData = testData[testData.BsmtUnfSF != "NA"]并得到错误TypeError: invalid type comparison然后我试过了testData = testData[testData.BsmtUnfSF != np.NAN]它不会给出任何错误,但不会删除行。如何解决这个问题?
查看完整描述

3 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

假设您的数据帧:


>>> df

    col1

0   1473

1   1093

2   1346

3   1324

4    NaN

5   1129

6     58

7    847

8     54

9    831

10   816

您有多种解决方案:

>>> df[pd.notnull(df['col1'])]

    col1

0   1473

1   1093

2   1346

3   1324

5   1129

6     58

7    847

8     54

9    831

10   816


>>> df[df.col1.notnull()]

#  df[df['col1'].notnull()]

    col1

0   1473

1   1093

2   1346

3   1324

5   1129

6     58

7    847

8     54

9    831

10   816



>>> df.dropna(subset=['col1'])

    col1

0   1473

1   1093

2   1346

3   1324

5   1129

6     58

7    847

8     54

9    831

10   816


>>> df.dropna()

    col1

0   1473

1   1093

2   1346

3   1324

5   1129

6     58

7    847

8     54

9    831

10   816


>>> df[~df.col1.isnull()]

    col1

0   1473

1   1093

2   1346

3   1324

5   1129

6     58

7    847

8     54

9    831

10   816



查看完整回答
反对 回复 2021-09-25
?
慕村225694

TA贡献1880条经验 获得超4个赞

你可以使用dropna

testData = testData.dropna(subsets = 'BsmtUnfSF']


查看完整回答
反对 回复 2021-09-25
?
慕田峪9158850

TA贡献1794条经验 获得超7个赞

这是您如何做到的。只需更改column您想要的列名。


import pandas as pd

import numpy as np

df = pd.DataFrame({"column": [1,2,3,np.nan,6]})

df = df[np.isfinite(df['column'])]


查看完整回答
反对 回复 2021-09-25
  • 3 回答
  • 0 关注
  • 203 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号