如果列包含 Pandas 中的任何字符串值,请从数据框中删除值



我想从包含浮点型 dtype 列的字符串值的数据框中删除行。例如,如果我有一个金额字段,我想删除数据帧中金额字段中包含值"NA"的所有行。

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

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

data = data[data.gross.str != 'NA']

我得到"一个仅使用带有字符串值的 .str 访问器,它在熊猫中使用np.object_ dtype"。

正确的方法是什么?

如果NA缺少值(NaN(需要notnulldropna指定检查列NaNs:

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 删除这些行。

最新更新