python - 使用 Pandas 解析大型 txt 文件时出现 ParserError
问题描述
我正在尝试用 Pandas 解析一个大的 .txt 文件。该文件大小为 1.6 GB。您可以在此处下载该文件(它是所有国家和定居点的 GeoNames 数据库转储)。
关于在 Pandas 中加载和解析文件,我在这里和这里查阅了答案,这就是我在代码中的内容:
import pandas as pd
for chunk in pd.read_csv(
"allCountries.txt",
header=None,
engine="python",
sep=r"\s{1,}",
names=[
"geonameid",
"name",
"asciiname",
"alternatenames",
"latitude",
"longitude",
"feature class",
"feature code",
"country code",
"cc2",
"admin1 code",
"admin2 code",
"admin3 code",
"admin4 code",
"population",
"elevation",
"dem",
"timezone",
"modification date",
],
chunksize=1000,
):
print(chunk[0]) # just printing out the first row
如果我运行上面的代码,我会收到以下错误:
ParserError:预计第 1 行中有 20 个字段,看到 25。错误可能是由于使用多字符分隔符时忽略引号引起的。
我不知道这里出了什么问题。有人可以告诉我出了什么问题,我该如何解决?
解决方案
您的分隔符错误,因为您在一列(名称)中有空格:
2986043 Pic de Font Blanca Pic de Font Blanca Pic de Font Blanca,Pic du Port 42.64991 1.53335 T PK AD 00 0 2860 欧洲/安道尔 2014-11-05
它被解析错误。
这段代码对我有用:
for chunk in pd.read_csv(
"allCountries.txt",
header=None,
engine="python",
sep=r"\t+",
names=[
"geonameid",
"name",
"asciiname",
"alternatenames",
"latitude",
"longitude",
"feature class",
"feature code",
"country code",
"cc2",
"admin1 code",
"admin2 code",
"admin3 code",
"admin4 code",
"population",
"elevation",
"dem",
"timezone",
"modification date",
],
chunksize=1000,
):
print(chunk)
推荐阅读
- spring-boot - Spring Data Neo4j 6 @ConvertWith 实现
- flutter - 按值颤动过滤器数组
- swiftui - SwiftUI 2.0:使用 .fileExporter 修饰符导出图像
- sql - SQL 中的部分屏蔽 - Oracle
- git - Git 从分支复制到 master 并保存所有提交
- java - 单击按钮后如何将整数值从一个java文件传递到另一个java文件
- forms - 如何在 Vuejs 向 Spring Boot 提交表单数据
- java - 如何使用 org.jdom.Element 在 Java 中访问 XML 的子元素
- flutter - 在根项目“连接”中找不到任务“assembleAarRelease”
- android - 如何使用某些 ConstraintLayout 组件将 View 替换为 set constraintVertical_bias?