Попробуйте использовать NaN
фильтр pd.read_csv()
.Для каждого столбца можно указать разные значения, которые следует учитывать как NaN.В вашем случае это должно работать:
df = pd.read_csv('your_file.csv', na_values={'HC04_VC03': '(X)', 'HC04_VC04': '***'})
Pandas автоматически выберет подходящий тип d для ваших данных.В этом случае вы получите нужные плавающие столбцы.Вы также можете указать тип данных, как вы читаете в CSV-файле, используя параметр dtype = {'GEO.id2': np.int64, 'HC04_VC04': np.float64, 'HC02_VC05': np.float64}
или любой другой допустимый dtypes по вашему выбору.Используйте эту опцию с осторожностью, так как установка dtype вызовет ошибку, если данные не могут быть преобразованы в нужный тип, например, если вы сначала не избавитесь от всех '***'
строк.
В качестве альтернативы, вы можетечитать в файле csv без указания типов данных, а затем преобразовывать столбцы после использования pd.to_numeric .Например,
df['GEO.id2'] = pd.to_numeric(df['GEO.id2'], errors = 'ignore') # values that can't be converted to integer types will be left alone
В документации есть другие методы для обработки данных, которые не могут быть преобразованы.