从CSV文件获取行号,其中熊猫无法处理行

时间:2020-07-08 10:53:50

标签: python python-3.x pandas csv error-handling

我正在尝试识别无法从CSV文件加载到Pandas DataFrame中的行(具有10_000行,行号9768出现问题)。 我尝试过的:

import pandas as pd


def get_error_lines(self):
    """Reading csv files."""
    error_lines = set()
    try:  # Creating reader in chunks -- reduces memory load
        reader = pd.read_csv(self.file, chunksize=5_000)
        for chunk in reader:
            print(chunk)
    except Exception as detail:
        error_line = str(detail).split()[-1]
        error_lines.add(error_line)
    return error_lines

这将返回:

                            STD_DRUG_DESC      NDC_CODE
0                   tramadol 50 mg tablet   00093005801
1                Norco 5 mg-325 mg tablet   52544091301
2               gabapentin 100 mg capsule   00378542601
3                Norco 5 mg-325 mg tablet   52544091301
4               gabapentin 100 mg capsule   00378542601
...                                   ...           ...
4995             FISH OIL 1000 MG PO CAPS              
4996  INSULIN DETEMIR 100 UNIT/ML SC SOPN              
4997  INSULIN DETEMIR 100 UNIT/ML SC SOPN              
4998    AMLODIPINE BESYLATE 10 MG PO TABS              
4999                GLUCOSE BLOOD VI STRP              

[5000 rows x 2 columns]
9768

因此,第一个chunk成功加载,但是第二个chunk由于第9768行而失败。 第9767-9769行的内容是:

LACTATED RINGERS IV BOLUS, 00338011704
PROMETHAZINE 25 MG/ML INJECTION SOLUTION, 
LACTATED RINGERS INTRAVENOUS SOLUTION, 00409795309

显示9768行缺少NDC_CODE值。 但是,文件前面有多行也缺少NDC_CODE的值, 那么您如何认为这行可能会有所不同,以及如何动态识别此类行号? 当前方法不会获取所有正确的行,也不会捕获所有错误的行号。

0 个答案:

没有答案