Python “大熊猫”;阅读“U csv”;未读取整个.TXT文件

Python “大熊猫”;阅读“U csv”;未读取整个.TXT文件,python,pandas,csv,bigdata,Python,Pandas,Csv,Bigdata,首先,我在这里发现了几个标题/主题相同的问题,我尝试了建议的解决方案,但没有一个对我有效 以下是问题: 我想从一个巨大的.txt文件(>50GB)中提取一个工人样本 为此,我正在使用HPC群集 数据中的每一行表示一个具有许多信息(列变量)的工作进程。其思想是根据ID变量中的前两个字母提取工作者的子样本: df = pd.read_csv('path-to-my-txt-file', encoding= 'ISO-8859-1', sep = '\t', low_memory=False, err

首先,我在这里发现了几个标题/主题相同的问题,我尝试了建议的解决方案,但没有一个对我有效

以下是问题: 我想从一个巨大的.txt文件(>50GB)中提取一个工人样本 为此,我正在使用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”、“拉丁语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)

亲爱的贾里德,谢谢你的回复。你完全正确,但你错过了我的一句话,我使用的是HPC或高性能计算机集群(256GB RAM+28核CPU),对不起,我必须弄清楚这一点。我会按照你的建议把文件分块读。