繁体   English   中英

Python-pandas“read_csv”没有读取整个.TXT 文件

[英]Python-pandas "read_csv" is not reading the whole .TXT file

首先,我在这里找到了几个具有相同标题/主题的问题,并且我尝试了建议的解决方案,但没有一个对我有用

这是问题所在:我想从一个巨大的.txt 文件(> 50 GB)中提取工作人员样本,我为此目的使用 HPC 集群。

数据中的每一行代表一个具有许多信息(列变量)的工人。 这个想法是根据 ID 变量中的前两个字母提取工人的子样本:

df = pd.read_csv('path-to-my-txt-file', encoding= 'ISO-8859-1', sep = '\t', low_memory=False, error_bad_lines=False, dtype=str)
df = df.rename(columns = {'Worker ID' : 'worker_id'})

# extract subsample based on first 2 lettter in worker id
new_df = df[df.worker_id.str.startswith('DK', na=False)]
new_df.to_csv('DK_worker.csv', index = False)

问题是生成的.CSV 文件只有应该存在的行数的 10-15%(我有另一个关于我应该期望的大致行数的信息来源)。

我认为数据存在一些编码问题。 我试过像'utf-8','latin_1'这样的东西......没有任何改变。

您是否在此代码中看到任何可能导致此问题的错误? 我错过了一些争论吗?

我不是 Python 专家:)

提前谢谢了。

您无法将 50GB 的文件加载到计算机 RAM 中,因此无法存储那么多数据。 而且我怀疑 csv 模块可以处理那种大小的文件。 您需要做的是以小块打开文件,然后处理每一块。

def process_data(piece):
    # process the chunk ...

def read_in_chunks(file_object, chunk_size=1024):
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data


with open('path-to-my-txt-file.csv') as f:
    for piece in read_in_chunks(f):
        process_data(piece)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM