簡體   English   中英

Pandas read_csv 靜默失敗

[英]Pandas read_csv fails silently

我正在嘗試將平面文件加載到 python pandas 數據框中。 使用 Python 3.8.3 和 pandas 版本 1.0.5

read_csv代碼是這樣的:

import pandas as pd
df =  pd.read_csv(myfile, sep='|', usecols=[0], names=["ID"],
                    dtype=str,
                    encoding='UTF-8', 
                    memory_map=True,
                    low_memory=True, engine='c')
print('nb entries:', df["ID"].size)

這給了我一些條目。 但是,這與我使用以下代碼獲得的條目數不匹配:

num_lines = sum(1 for line in open(myfile, encoding='UTF-8')
print('nb lines:', num_lines)

我沒有收到錯誤消息。

我嘗試了幾個選項(有/沒有編碼,有/沒有低 memory,有或沒有 memory map,有或沒有 warn_bad_lines,有 c 引擎或默認引擎),但我總是得到相同的錯誤結果。

通過更改nrows參數,我確定了文件中的問題所在。 我將感興趣的行復制到測試文件中,然后在測試文件上重新運行代碼。 這次我得到了正確的結果。

現在我意識到我的機器在 memory 上有點短,所以可能一些分配失敗了。 有沒有辦法對此進行測試? 我嘗試在沒有打開任何其他應用程序的情況下運行腳本,但我得到了同樣的錯誤結果。

我應該如何解決此類問題?

像這樣的東西可以用來分塊讀取文件

import pandas as pd
import numpy as np

n_rows = sum(1 for _ in open("./test.csv", encoding='UTF-8')) - 1
chunk_size = 300
n_chunks = int(np.ceil(n_rows / chunk_size))


read_lines = 0
for chunk_idx in range(n_chunks):
    df = pd.read_csv("./test.csv", header=0, skiprows=chunk_idx*chunk_size, nrows=chunk_size)
    read_lines += len(df)

print(read_lines)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM