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

时间:2018-12-25 00:34:05

标签: python pandas

我在dataframe列中具有以下唯一值。

['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 个答案:

答案 0 :(得分:0)

这是您的操作方法。只需将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'])]

答案 1 :(得分:0)

您可以使用dropna

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

答案 2 :(得分:0)

假设您的dataFrame:

>>> 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

您有多种解决方案:

{{1}}