如何在python中删除错误类型的行?

我有一个这样的数据框:

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: invalid literal for int() with base 10: ’92#’

所以我想删除所有无法转换为int64的行,并得到我的结果:

    foo
0   1
1   2

最佳答案 如果您想要一个整体应用于dataFrame的解决方案,请通过apply调用pd.to_numeric,并使用结果掩码删除行:

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

如果要将结果类型转换为int64,请在末尾添加.astype(int)调用.

点赞