Este script funciona bem com Python 3.11 e Pandas 2.2:
import pandas as pd
df = pd.read_csv(f'test.csv', comment='#')
df['x1'] = df['x1']*8
# df['y1'] = df['y1']*8
print(df)
e impressões:
x1 y1
0 0 0
1 16 6
2 32 12
mas falha quando eu descomento df['y1'] = df['y1']*8
e produz KeyError: 'y1'
. Por que isso? 'y1'
é uma chave válida. Aqui está o test.csv
arquivo:
# comment
x1, y1
0, 0
2, 6
4, 12
Isso não é um CSV válido. É verdade que o CSV é definido de forma imprecisa, mas espaços em branco gratuitos são um problema. Tente olhar os nomes das colunas:
Pandas presumiu que você queria que esses espaços fizessem parte do nome da coluna. Pandas fez um bom trabalho em adivinhar os inteiros, mas então o inteiro nativo do python entende como fazer isso para
Você pode remover o espaço em branco após ler o csv
E se os dados da coluna também tiverem o mesmo problema de espaço (talvez você tenha uma coluna de strings), você pode fazer a mesma coisa lá.
Leia seu arquivo com a
skipinitialspace=True
opção deread_csv
Colunas: