删除特定列中不是数字的所有行

acruukt9  于 2022-10-23  发布在  其他
关注(0)|答案(2)|浏览(246)

我有个问题。我想删除列['a','b']中所有不是数字的行。我已经尝试过了,但我的方法效果不太好。
Dataframe

a   b  c
0     0.1  10  x
1     0.5   5  y
2  10 / 5  60  z
3     9.0  12  w
4     125   a  w

密码

import uuid
import pandas as pd
df = pd.DataFrame(
    {'a': [0.1,0.5,'10 / 5', 9.0, 125],
     'b': [10, 5, 60, 12, 'a'],
     'c': ['x', 'y', 'z', 'w', 'w']
    })

print(df)
df['id'] = df.apply(lambda x: uuid.uuid4().int, axis=1)
df_ = df[['a', 'b', 'id']].apply(lambda x: pd.to_numeric(x, errors='coerce')).dropna()
df.merge(df_, left_on=['id'], right_on=['id'], how='inner')

我想要什么

a   b  c
0     0.1  10  x
1     0.5   5  y
3     9.0  12  w
d8tt03nd

d8tt03nd1#

你可以这么做

out = df[~df[['a', 'b', 'id']].apply(lambda x: pd.to_numeric(x, errors='coerce')).isna().any(1)]
mwg9r5ms

mwg9r5ms2#

那怎么样

new_df = df[list(df.a.str.isnumeric() != False) and list(df.a.str.isnumeric() != False)]

    a   b   c
0   0.1 10  x
1   0.5 5   y
3   9.0 12  w
4   125 a   w

我确信有一个更好的版本可以做到这一点,但isnumeric()并不能像预期的那样工作(我的)

相关问题