#pandas
Вопрос:
По какой-то причине мой большой фрейм данных не преобразуется в тип, и я получаю следующее сообщение об ошибке: could not convert string to float: 'False'.
Теперь, когда у меня есть 100 столбцов, я хочу определить, в каком столбце не удается выполнить преобразование astype, поэтому посмотрите на обратную трассировку:
result = result.astype(pdSchema)
File "C:UsersspideyAppDataRoamingPythonPython39site-packagespandascoregeneric.py", line 5859, in astype
col.astype(dtype=dtype[col_name], copy=copy, errors=errors)
File "C:UsersspideyAppDataRoamingPythonPython39site-packagespandascoregeneric.py", line 5874, in astype
new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors)
File "C:UsersspideyAppDataRoamingPythonPython39site-packagespandascoreinternalsmanagers.py", line 631, in astype
return self.apply("astype", dtype=dtype, copy=copy, errors=errors)
File "C:UsersspideyAppDataRoamingPythonPython39site-packagespandascoreinternalsmanagers.py", line 427, in apply
applied = getattr(b, f)(**kwargs)
File "C:UsersspideyAppDataRoamingPythonPython39site-packagespandascoreinternalsblocks.py", line 673, in astype
values = astype_nansafe(vals1d, dtype, copy=True)
File "C:UsersspideyAppDataRoamingPythonPython39site-packagespandascoredtypescast.py", line 1097, in astype_nansafe
return arr.astype(dtype, copy=True)
ValueError: could not convert string to float: 'False'
Я могу определить, что значение «False», но я не могу определить, в каком столбце он выходит из строя, и, поскольку мои несколько столбцов имеют одинаковое значение, чтобы обработать это исключение, я хочу знать имя столбца, в котором он выходит из строя.
Ответ №1:
Я думаю pdSchema
, это дикт, так что вы можете проверить это с помощью:
for k, v in pdSchema.items():
try:
result[k].astype(v)
except ValueError:
print (f'Column {k} failed for converting to {v}')
Комментарии:
1. Ого, это так просто, но в то же время так инновационно. Никогда не думал об этом таким образом, большое спасибо, приятель.