У меня необычный вариант использования. Я пытаюсь проанализировать csv в Python и получить ВСЕ типы данных для каждого столбца, то есть список типов данных в этом столбце (например, «строка», «int», «null». И да, столбцы могут содержат значения NULL. Это очень беспорядочные данные. Я знаю, что легко вывести один тип данных для каждого столбца, но это не то, что я ищу.
Pandas df.dtypes
дает только 1 типа для каждого столбца. Кроме того, значения NULL заставляют его идентифицировать столбцы int как объект.
Моя первоначальная идея заключалась в том, чтобы получить все значения из каждого столбца, затем прокрутить эти значения и проверить каждое значение с помощью isinstance
. Это уродливое, неэффективное решение, но в моем случае оно работает. Однако pd.read_csv
приводит к преобразованию всего в объект из-за смешанных значений и значений NULL, которые, в свою очередь, идентифицируются как строка. А csv.DictReader
, похоже, приводит все как строку (я не знаю это, но делаю вывод на основании поведения). Таким образом, даже попытка pandas.api.types.infer_dtype
или что-то вроде pandas.api.types.is_float_dtype
не помогает, поскольку он все еще идентифицирует все как str ing.
Сейчас я использую регулярное выражение, что еще более ужасно. Я искал в Интернете решение и пробовал все, что мог придумать. Возможно ли это хоть сколько-нибудь принципиально?