Как определить, какой заголовок astype в pandas не преобразуется?

#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. Ого, это так просто, но в то же время так инновационно. Никогда не думал об этом таким образом, большое спасибо, приятель.