У меня есть фрейм данных с именем «Lookup», который выглядит примерно так:
| Variable | Type
0 | Var1 | object
1 | Var2 | np.uint16
Я хочу использовать это, чтобы создать словарь для импорта большого csv, чтобы сохранить малый объем памяти.
Большой csv слишком велик, чтобы использовать параметр low_memory = False для pd.read_csv.
Я мог бы впоследствии изменить тип данных или вручную ввести все переменные, но у меня есть более 200 переменных ине хочу выписывать словарь явно.
Я использовал следующий код
Lookup= Lookup.set_index('Variable')
dic = Lookup.to_dict('dict')
и
dic = dict(zip(Lookup['Variable'].tolist(), Lookup['Type'].tolist()))
, но оба они сталкиваются с одной и той же проблемой:помещая 'Type' внутри кавычек в словаре, например, "np.uint16" вместо np.uint16
Это означает, что когда я запускаю read_csv:
df = pd.read_csv("input.csv", nrows=100, dtype=dic)
, я получаю ошибку "Ошибка типа: тип данных "np.uint16" не понят "
Как создать словарь, содержащий переменную и тип данных, из фрейма данных pandas, который затем можно использовать внутри оператора read_csv без ошибок?
Примечание«input.csv» имеет длину 100M + строк и 250+ столбцов, поэтому цель всего этого - заставить фрейм данных Pandas занимать как можно меньше памяти при сохранении точности.