在处理其余列时,如何将导致错误的数据插入到单独的文件中?

问题描述 投票:0回答:1

我正在制作一个处理超过2000万行和超过50列数据的程序。我正在尝试检查列之一中的数字是偶数还是奇数。

如果是偶数,则将'E'插入另一列;如果是奇数,请在列中插入“ O”。

DF_FILE_IN = pd.read_csv('3MB_2.txt',chunksize=1000,sep='\t',dtype=str,engine='c',header=0,encoding='latin-1')
out_fields = ['HSNBR','OEFLAG']

for DF_FILE in DF_FILE_IN:
    df_out1 = pd.DataFrame(dtype='str',columns=out_fields)
    df_out1['HSNBR'] = DF_FILE['ANumber'].map(lambda x: f'{x:0>6}')

    df_out1.loc[pd.to_numeric(df_out1['HSNBR']).map(lambda x: (x % 2 == 0) & (x != 0)), 'OEFLAG'] = 'E'
    df_out1.loc[pd.to_numeric(df_out1['HSNBR']).map(lambda x: (x % 2 != 0) & (x != 0)), 'OEFLAG'] = 'O'

但是某些数据包含字母,符号,空格等。>>

当我运行它时,此行代码将弹出错误:df_out1.loc[pd.to_numeric(df_out1['HSNBR']).map(lambda x: (x % 2 == 0) & (x != 0)), 'OEFLAG'] = 'E'

并说(示例):

ValueError: Unable to parse string "111 1/2g" at position 10

我正在使用分块提取数据(例如一次输入100万行)。我想将导致错误的数据放入单独的文件中。但是,当我使用try except时,它不会处理该块中的数据列。

如何让数据和错误保存到文件中,同时让程序继续处理列?

我正在制作一个处理超过2000万行和超过50列数据的程序。我正在尝试检查列之一中的数字是偶数还是奇数。如果是偶数,则将'E'插入另一个......>

python pandas bigdata
1个回答
0
投票

@ BernardL的意思是写一个类似的函数:

def even_odd(x):
    x = str(x)
    if x.isnumeric():
        x = int(x)
        if (x % 2 == 0) and (x != 0):
            return 'E'
        if (x % 2 != 0) and (x != 0):
            return 'O'
    return 'error' 
© www.soinside.com 2019 - 2024. All rights reserved.