我正在制作一个处理超过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'插入另一个......>
@ 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'