簡體   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