Pandas – Strip espacio en blanco

Estoy usando Python csvkit para comparar 2 archivos como este:

 df1 = pd.read_csv('input1.csv', sep=',\s+', delimiter=',', encoding="utf-8") df2 = pd.read_csv('input2.csv', sep=',\s,', delimiter=',', encoding="utf-8") df3 = pd.merge(df1,df2, on='employee_id', how='right') df3.to_csv('output.csv', encoding='utf-8', index=False) 

Actualmente estoy ejecutando el archivo a través de un script de antemano que elimina los espacios de la columna employee_id .

Un ejemplo de employee_id s:

 37 78973 3 23787 2 22 3 123 

¿Hay alguna manera de hacer que csvkit haga y me guarde un paso?

Puedes strip() una serie completa en Pandas usando .str.strip () :

 df1['employee_id'] = df1['employee_id'].str.strip() df2['employee_id'] = df2['employee_id'].str.strip() 

Esto eliminará los espacios en blanco iniciales / finales en la columna employee_id en df1 y df2

Alternativamente, puede modificar sus líneas read_csv para usar también skipinitialspace=True

 df1 = pd.read_csv('input1.csv', sep=',\s+', delimiter=',', encoding="utf-8", skipinitialspace=True) df2 = pd.read_csv('input2.csv', sep=',\s,', delimiter=',', encoding="utf-8", skipinitialspace=True) 

Parece que está intentando eliminar espacios en una cadena que contiene números. Puedes hacer esto por:

 df1['employee_id'] = df1['employee_id'].str.replace(" ","") df2['employee_id'] = df2['employee_id'].str.replace(" ","") 

Puedes hacer la strip() en pandas.read_csv() como:

 pandas.read_csv(..., converters={'employee_id': str.strip}) 

Y si solo necesitas quitar los espacios en blanco iniciales:

 pandas.read_csv(..., converters={'employee_id': str.lstrip}) 

Y para eliminar todos los espacios:

 def strip_spaces(a_str_with_spaces): return a_str_with_spaces.replace(' ', '') pandas.read_csv(..., converters={'employee_id': strip_spaces}) 
 Df['employee']=Df['employee'].str.strip()