我想从包含浮点型 dtype 列的字符串值的数据框中删除行。例如,如果我有一个金额字段,我想删除数据帧中金额字段中包含值"NA"的所有行。
到目前为止,我已经尝试了以下方法 -
to_drop = ['NA']
data = data[~data['gross'].isin(to_drop)]
和
data = data[data.gross.str != 'NA']
我得到"一个仅使用带有字符串值的 .str 访问器,它在熊猫中使用np.object_ dtype"。
正确的方法是什么?
如果NA
缺少值(NaN
(需要notnull
或dropna
指定检查列NaN
s:
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
或者,如果混合值 - 带有字符串的数字首先将所有值转换为str
或比较由values
创建的 numpy 数组:
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
IIUC:
data['gross'] = data.gross.replace('NA',np.nan)
data = data.dropna()
或
data[~data.gross.replace('NA',np.nan).isnull()]
将字符串"NA"替换为 NaN,然后使用 dropna axis=1 删除这些行。