Если вы хотите решение, которое применяется к 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
.