Python 如果列中包含任何字符串值,则从dataframe中删除值

Python 如果列中包含任何字符串值,则从dataframe中删除值,python,pandas,dataframe,Python,Pandas,Dataframe,我想从数据框中删除包含浮点数据类型列的字符串值的行。例如,如果我有一个amount字段,我想删除数据框中amount字段中包含值“NA”的所有行 到目前为止,我已经尝试了以下方法- to_drop = ['NA'] data = data[~data['gross'].isin(to_drop)] 及 我得到了“一个只使用字符串值的.str访问器,它在pandas中使用np.object dtype” 正确的方法是什么?如果NA缺少值(NaN),则需要或指定检查NaN的列: data = pd

我想从数据框中删除包含浮点数据类型列的字符串值的行。例如,如果我有一个amount字段,我想删除数据框中amount字段中包含值“NA”的所有行

到目前为止,我已经尝试了以下方法-

to_drop = ['NA']
data = data[~data['gross'].isin(to_drop)]

我得到了“一个只使用字符串值的.str访问器,它在pandas中使用np.object dtype”


正确的方法是什么?

如果
NA
缺少值(
NaN
),则需要或指定检查
NaN
的列:

data = pd.DataFrame({'gross':[np.nan,3,5],
                     'a':[2,3,4]})

print (data)
   a  gross
0  2    NaN
1  3    3.0
2  4    5.0

data1 = data[data.gross.notnull()]
print (data1)
   a  gross
1  3    3.0
2  4    5.0

或者,如果混合值-带字符串的数值首先将所有值强制转换为
str
或比较由以下创建的numpy数组:


IIUC:

将字符串“NA”替换为NaN,然后使用dropna axis=1删除这些行

data = pd.DataFrame({'gross':[np.nan,3,5],
                     'a':[2,3,4]})

print (data)
   a  gross
0  2    NaN
1  3    3.0
2  4    5.0

data1 = data[data.gross.notnull()]
print (data1)
   a  gross
1  3    3.0
2  4    5.0
data1 = data.dropna(subset=['gross'])
print (data1)
   a  gross
1  3    3.0
2  4    5.0
data = pd.DataFrame({'gross':['NA',3,5,'NA'],
                     'a':[2,3,4,8]})

print (data)
   a gross
0  2    NA
1  3     3
2  4     5
3  8    NA

data2 = data[data.gross.astype(str) != 'NA']
print (data2)
   a gross
1  3     3
2  4     5
data2 = data[data.gross.values != 'NA']
print (data2)
   a gross
1  3     3
2  4     5
data['gross'] = data.gross.replace('NA',np.nan)
data = data.dropna()
data[~data.gross.replace('NA',np.nan).isnull()]