如何使用带有 gzip 压缩选项的 pandas read_csv 读取 tar.gz 文件?
How can I read tar.gz file using pandas read_csv with gzip compression option?
我有一个非常简单的 csv,包含以下数据,压缩在 tar.gz 文件中。我需要使用 pandas.read_csv 在数据框中读取它。
A B
0 1 4
1 2 5
2 3 6
import pandas as pd
pd.read_csv("sample.tar.gz",compression='gzip')
但是,我收到错误消息:
CParserError: Error tokenizing data. C error: Expected 1 fields in line 440, saw 2
以下是一组 read_csv 命令以及我遇到的不同错误:
pd.read_csv("sample.tar.gz",compression='gzip', engine='python')
Error: line contains NULL byte
pd.read_csv("sample.tar.gz",compression='gzip', header=0)
CParserError: Error tokenizing data. C error: Expected 1 fields in line 440, saw 2
pd.read_csv("sample.tar.gz",compression='gzip', header=0, sep=" ")
CParserError: Error tokenizing data. C error: Expected 2 fields in line 94, saw 14
pd.read_csv("sample.tar.gz",compression='gzip', header=0, sep=" ", engine='python')
Error: line contains NULL byte
这里出了什么问题?我该如何解决这个问题?
df = pd.read_csv('sample.tar.gz', compression='gzip', header=0, sep=' ', quotechar='"', error_bad_lines=False)
注意:error_bad_lines=False
将忽略违规行。
您可以使用 tarfile
module to read a particular file from the tar.gz archive (as discussed in this resolved issue)。
如果存档中只有一个文件,那么你可以这样做:
import tarfile
import pandas as pd
with tarfile.open("sample.tar.gz", "r:*") as tar:
csv_path = tar.getnames()[0]
df = pd.read_csv(tar.extractfile(csv_path), header=0, sep=" ")
读取模式r:*
适当处理 gz 扩展(或其他类型的压缩)。如果压缩的 tar 文件中有多个文件,那么您可以执行类似 csv_path = list(n for n in tar.getnames() if n.endswith('.csv'))[-1]
行的操作来获取存档文件夹中的最后一个 csv 文件。
我有一个非常简单的 csv,包含以下数据,压缩在 tar.gz 文件中。我需要使用 pandas.read_csv 在数据框中读取它。
A B
0 1 4
1 2 5
2 3 6
import pandas as pd
pd.read_csv("sample.tar.gz",compression='gzip')
但是,我收到错误消息:
CParserError: Error tokenizing data. C error: Expected 1 fields in line 440, saw 2
以下是一组 read_csv 命令以及我遇到的不同错误:
pd.read_csv("sample.tar.gz",compression='gzip', engine='python')
Error: line contains NULL byte
pd.read_csv("sample.tar.gz",compression='gzip', header=0)
CParserError: Error tokenizing data. C error: Expected 1 fields in line 440, saw 2
pd.read_csv("sample.tar.gz",compression='gzip', header=0, sep=" ")
CParserError: Error tokenizing data. C error: Expected 2 fields in line 94, saw 14
pd.read_csv("sample.tar.gz",compression='gzip', header=0, sep=" ", engine='python')
Error: line contains NULL byte
这里出了什么问题?我该如何解决这个问题?
df = pd.read_csv('sample.tar.gz', compression='gzip', header=0, sep=' ', quotechar='"', error_bad_lines=False)
注意:error_bad_lines=False
将忽略违规行。
您可以使用 tarfile
module to read a particular file from the tar.gz archive (as discussed in this resolved issue)。
如果存档中只有一个文件,那么你可以这样做:
import tarfile
import pandas as pd
with tarfile.open("sample.tar.gz", "r:*") as tar:
csv_path = tar.getnames()[0]
df = pd.read_csv(tar.extractfile(csv_path), header=0, sep=" ")
读取模式r:*
适当处理 gz 扩展(或其他类型的压缩)。如果压缩的 tar 文件中有多个文件,那么您可以执行类似 csv_path = list(n for n in tar.getnames() if n.endswith('.csv'))[-1]
行的操作来获取存档文件夹中的最后一个 csv 文件。