На мой взгляд, наиболее безопасным является использование pd.to_numeric
в вашей функции apply
, которая также позволяет манипулировать ошибками, coerce
, raise
или ignore
. После получения столбцов в numeri c вы можете безопасно выполнить операцию astype()
, но я бы не предлагал начинать ее с:
df.apply(pd.to_numeric, errors='ignore')
Если столбец не может быть преобразован в numeri c, он останется без изменений
df.apply(pd.to_numeric, errors='coerce')
Столбцы будут преобразованы в numeri c, значения, которые не могут быть преобразованы в numeri c в столбце, будут заменены на NaN
.
df.apply(pd.to_numeric, errors='raise')
ValueError
будет возвращено, если столбец не может быть преобразован в numeri c