Python 如果列中包含任何字符串值,则从dataframe中删除值
我想从数据框中删除包含浮点数据类型列的字符串值的行。例如,如果我有一个amount字段,我想删除数据框中amount字段中包含值“NA”的所有行 到目前为止,我已经尝试了以下方法-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
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()]