我正在从s3中提取一个csv.gz文件,并将其加载到熊猫数据框中。
最近我的日常管道由于.nextInt()
而开始失败。
要解决此问题,我想先尝试以UTF-8格式读取文件,然后如果失败,请尝试latin-1编码。
但是我的代码的行为不像我想的那样,我为此而感到困惑。 csv文件应具有1万行。当我仅使用UnicodeDecodeError
运行第二个df调用时,我得到了正确的数据帧,但是添加try / except并不能为我提供正确的df。
encoding=latin1
输出
headers = ['A', 'B', 'C', 'D', 'E','F']
obj = s3.get_object(Bucket='srdata-lab', Key=xref_file_path)
try:
df = pd.read_csv(io.BytesIO(obj["Body"].read()), compression="gzip", sep="|",
names=headers, header=None, parse_dates=['A'])
except UnicodeDecodeError:
logger.info('Going the latin route')
df = pd.read_csv(io.BytesIO(obj["Body"].read()), compression="gzip", sep="|",
names=headers, header=None, parse_dates=['A'], encoding = 'latin1')
logger.info(f"df shape: {df.shape}")