在1000万条记录的CSV中,无法读取CSV文件第7,777,761行之后的内容

jum4pzuy  于 11个月前  发布在  其他
关注(0)|答案(1)|浏览(134)

我有一个1000万条记录的CSV文件,失败了大约770万行。它无法进入Excel数据模型,MySQL,最后当使用Pandas分块成更小的CSV时。
失败没有错误消息。进程只是停止。检查最后一个分块的CSV文件,它似乎在第7,777,761行失败
Pandas shape()和head()显示有1000万条记录,46列,前5行看起来不错。
因此,我正在寻找如何解决这个问题的想法。
我使用skiprows隔离了第7,777,761行附近的区域。我得到了一条错误消息,说“没有可读取的列”或类似的话。看起来文件就在那里结束了。
当试图将其加载到数据模型中时(失败),它是否已被Excel损坏?如果需要,我可以发布脚本和错误消息。
谢谢你,
尝试以大约7.7 mm的线导入到Excel数据模型FAQs(不确定原因,没有错误,只是停止。导入了一些东西,但非常低,如4900线)
尝试在相同的位置导入到MySQL FAQs,没有错误消息,只是停止了。
在Python中使用Pandas进行了实验,确认了1000000行和46列。
在成功地对一个10,000行的虚拟CSV进行分块后.
使用Pandas FAQs将文件分块为100,000行CSV文件,没有错误。最后一行是7,777,761
将区块大小更改为50000 FAQs,最后一行ID为7,777,761,没有错误。
从7,777,761毫米开始重新测量,但这一次,d出现了错误

nkoocmlb

nkoocmlb1#

你可以试着仔细检查问题区域周围的线条。这里有一个小助手函数可能会有所帮助:

def lines_from(filename, *args):
    lines = set([i for a in args for i in ([a] if isinstance(a, int) else a)])
    buf = io.StringIO()
    with open(filename, 'r') as f:
        for i, line in enumerate(f, 1):
            if i in lines:
                buf.write(line)
    buf.seek(0)
    return buf

字符串
示例用法:

with open('test.csv', 'w') as f:
    f.write('x,y\n')
    for i in range(2, 30):
        f.write(f'{i},{i*2}\n')


然后又道:

b = lines_from('test.csv', 1, range(9, 12))

>>> b.read()
'x,y\n9,18\n10,20\n11,22\n'

>>> pd.read_csv(lines_from('test.csv', 1, range(9, 12)))
    x   y
0   9  18
1  10  20
2  11  22

相关问题