Как удалить строки неправильного типа в Python? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть такой фрейм данных:

import pandas as pd
test_df = pd.DataFrame({'foo':['1','2','92#']})
test_df

    foo
0   1
1   2
2   92#

Я хочу преобразовать тип в int64:

test_df.foo.astype('int64')

но я получил сообщение об ошибке, потому что '92 # 'не может быть преобразовано в int64:

ValueError: недопустимый литерал для int () с основанием 10: '92 # '

Итак, я хочу отбросить все строки, которые не могут быть преобразованы в int64, и получил мой результат примерно так:

    foo
0   1
1   2

1 Ответ

0 голосов
/ 10 мая 2018

Если вы хотите решение, которое применяется к dataFrame в целом, вызовите pd.to_numeric - apply и используйте результирующую маску для удаления строк:

test_df[test_df.apply(pd.to_numeric, errors='coerce').notna()].dropna()

  foo
0   1
1   2

Это не меняет значения test_df. OTOH, если вы хотите отбросить строки при преобразовании значений, ваше решение упрощает:

test_df.apply(pd.to_numeric, errors='coerce').dropna()

   foo
0  1.0
1  2.0

Добавьте в конец вызов .astype(int), если хотите, чтобы тип результата был равен int64.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...