Как я могу преобразовать все столбцы из моего файла Excel, используя панды - PullRequest
0 голосов
/ 02 ноября 2018

Я хочу преобразовать все столбцы (59 столбцов) из моего файла Excel в файл данных с указанием типов. Некоторые столбцы представляют собой строку, другие даты, другие int и многое другое. Я знаю, что могу использовать конвертер в методе read_excel. но у меня много столбцов, и я не хочу писать конвертер = {'column1': type1, 'column2': type2, ..., 'column59': type59}

мой код:

import numpy as np
import pandas as pd
import recordlinkage
import xrld

fileName = 'C:/Users/Tito/Desktop/banco ZIKA4.xlsx'
strcols = [0, 5, 31, 36, 37, 38, 39, 40, 41, 45]
datecols = [3, 4, 29, 30, 32, 48, 50, 51, 52, 53, 54, 55]
intcols = [33, 43, 59]
booleancols = [6, ..., 28]
df = pd.read_excel(fileName, sheet_name=0, true_values=['s'], false_values=['n'], converters={strcols: str, intcols: np.int, booleancols: np.bool, datecols: pd.to_datetime})
print(df.iat[1, 31], df.iat[1, 32], df.iat[1, 33])

1 Ответ

0 голосов
/ 03 ноября 2018

Ваш код не работает, потому что converters kwarg не допускает списки из нескольких столбцов в качестве ключей для функций.

То, что вы можете сделать, это создать дикты вместо списков и предоставить сцепленные диктаты converters:

strcols = {c: str for c in [0, 5, 31, 36, 37, 38, 39, 40, 41, 45]}
datecols = {c: pd.to_datetime for c in [3, 4, 29, 30, 32, 48, 50, 51, 52, 53, 54, 55]}
intcols = {c: np.int for c in [33, 43, 59]}
booleancols = {c: np.bool for c in range(6, 29)}
conv_fcts = {**strcols, **datecols, **intcols, **booleancols}

df = pd.read_excel(fileName, converters=conv_fcts, sheet_name=0, true_values=['s'], false_values=['n'])
...