У меня есть файл CSV. Большинство его значений я хочу читать как строку, но я хочу прочитать столбец как bool, если существует столбец с данным заголовком.Pandas read_csv dtype указать все столбцы, кроме одного
Поскольку в файле CSV имеется много столбцов, я не хочу указать на каждой колонке тип данных напрямую и дать что-то вроде этого:
data = read_csv('sample.csv', dtype={'A': str, 'B': str, ..., 'X': bool})
можно ли определить тип строки на каждой колонке, но один и прочитать дополнительный столбец как BOOL в то же время?
Мое текущее решение заключается в следующем (но это очень unefficient и медленно):
data = read_csv('sample.csv', dtype=str) # reads all column as string
if 'X' in data.columns:
l = lambda row: True if row['X'] == 'True' else False if row['X'] == 'False' else None
data['X'] = data.apply(l, axis=1)
UPDATE: Образец CSV:
A;B;C;X
a1;b1;c1;True
a2;b2;c2;False
a3;b3;c3;True
Или же можно ба без столбца 'X' (поскольку колонка не является обязательной):
A;B;C
a1;b1;c1
a2;b2;c2
a3;b3;c3
Спасибо! Это намного быстрее, чем мое решение! – user1802693
Это решение имеет очень большую проблему. Оно устанавливает значения False в значения True. Любая строка с нулевой длиной анализируется как True. – user1802693
Вы абсолютно правы, поэтому я редактирую ответ. – jezrael