将数据帧转换为数字并删除

2024-04-27 04:45:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用:

df = df.convert_objects(convert_numeric=True).dropna()

但由于它已被弃用,所以我需要用to\u numeric替换它

我试过了

^{pr2}$

样本数据:

Name  Race Fav Age  Weight Height Style Cut
John   D    K  23    120   23.5    DD   RET
Rose   Z    U  33    110   47.9    KZ   DEZ
James  Z    U  FF    UK    NOT     Z    R

要转换为删除非数字行

输出:

Name  Race Fav Age  Weight Height Style Cut
John   D    K  23    120   23.5    DD   RET
Rose   Z    U  33    110   47.9    KZ   DEZ

Tags: nameconvertdfagestylejohnddheight
3条回答

您没有正确调用to_numeric。因为它只适用于列,如果要将其应用于所有列,则必须使用pd.apply

df = df.apply(pd.to_numeric)
df = df.dropna()

apply然后dropna

df.apply(lambda x :pd.to_numeric(x, errors ='coerce'),axis=1).dropna()

我会这样做:

In [399]: num_cols = df.columns[df.apply(pd.to_numeric, errors='coerce').any()]

In [400]: df[num_cols] = df[num_cols].apply(pd.to_numeric, errors='coerce')

In [401]: df = df[df.select_dtypes(['number']).notnull().all(1)]

In [402]: df
Out[402]:
   Name Race Fav   Age  Weight  Height Style  Cut
0  John    D   K  23.0   120.0    23.5    DD  RET
1  Rose    Z   U  33.0   110.0    47.9    KZ  DEZ

In [403]: df.dtypes
Out[403]:
Name       object
Race       object
Fav        object
Age       float64
Weight    float64
Height    float64
Style      object
Cut        object
dtype: object

相关问题 更多 >