我有一个相当大的固定宽度文件(~30M 行,4gb),当我尝试使用 pandas read_fwf() 创建一个 DataFrame 时,它只加载了文件的一部分,并且很好奇是否有人遇到过类似的问题此解析器不读取文件的全部内容。
import pandas as pd
file_name = r"C:\....\file.txt"
fwidths = [3,7,9,11,51,51]
df = read_fwf(file_name, widths = fwidths, names = [col0, col1, col2, col3, col4, col5])
print df.shape #<30M
Run Code Online (Sandbox Code Playgroud)
如果我天真地使用 read_csv() 将文件读入 1 列,则所有文件都将被读取到内存中,并且不会丢失数据。
import pandas as pd
file_name = r"C:\....\file.txt"
df = read_csv(file_name, delimiter = "|", names = [col0]) #arbitrary delimiter (the file doesn't include pipes)
print df.shape #~30M
Run Code Online (Sandbox Code Playgroud)
当然,如果没有看到文件的内容或格式,它可能与我的事情有关,但想看看过去是否有人遇到过任何问题。我做了一个健全性检查并测试了文件深处的几行,它们似乎都被正确格式化(当我能够使用相同的规范将其拉入带有 Talend 的 Oracle DB 时进一步验证)。
如果有人有任何想法,请告诉我,通过 Python 运行所有内容而不是在我开始开发分析时来回走动会很棒。