Ao carregar um arquivo csv no pandas, encontrei a seguinte mensagem de erro:
DtypeWarning: Columns have mixed types. Specify dtype option on import
or set low_memory=False
Lendo online encontrei algumas soluções.
Um, para definir low_memory=False
, mas entendo que isso não é uma boa prática e não resolve realmente o problema.
A segunda solução é definir um tipo de dados para cada coluna (ou cada coluna com tipos de dados mistos):
pd.read_csv(csv_path_name, dtype={'first_column': 'str', 'second_column': 'str'})
Novamente, pelo que li, não é a solução ideal se tivermos um grande conjunto de dados.
Terceira solução: criar uma função conversora. No meu entender, esta pode ser a solução mais adequada. Encontrei um código que funciona para mim, mas estou tentando entender melhor o que essa função faz exatamente:
def convert_dtype(x):
if not x:
return ''
try:
return str(x)
except:
return ''
df = pd.read_csv(csv_path_name, converters={'first_col':convert_dtype, 'second_col':convert_dtype, etc.... } )
Alguém pode me explicar o código da função?
Obrigado