Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas - Strip white space

Tags:

python

pandas

csv

I am using python csvkit to compare 2 files like this:

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)

Currently I am running the file through a script before hand that strips spaces from the employee_id column.

An example of employee_ids:

37 78973 3
23787
2 22 3
123

Is there a way to get csvkit to do it and save me a step?

like image 728
fightstarr20 Avatar asked Apr 10 '17 20:04

fightstarr20


People also ask

How do you trim values in a data frame?

You can use DataFrame. select_dtypes to select string columns and then apply function str. strip .

How do I strip multiple columns in pandas?

To strip whitespace from columns in Pandas we can use the str. strip(~) method or the str. replace(~) method.

How do you remove leading and trailing spaces in pandas DataFrame?

Step 1: Strip leading and trailing whitespaces in Pandas To strip whitespaces from a single column in Pandas We will use method - str. strip(). Note: strip() only works on leading and trailing white space.


4 Answers

You can strip() an entire Series in Pandas using .str.strip():

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

This will remove leading/trailing whitespaces on the employee_id column in both df1 and df2

Alternatively, you can modify your read_csv lines to also use 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)

It looks like you are attempting to remove spaces in a string containing numbers. You can do this by:

df1['employee_id'] = df1['employee_id'].str.replace(" ","")
df2['employee_id'] = df2['employee_id'].str.replace(" ","")
like image 116
Andy Avatar answered Nov 05 '22 06:11

Andy


You can do the strip() in pandas.read_csv() as:

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

And if you need to only strip leading whitespace:

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

And to remove all spaces:

def strip_spaces(a_str_with_spaces):
    return a_str_with_spaces.replace(' ', '')

pandas.read_csv(..., converters={'employee_id': strip_spaces})
like image 27
Stephen Rauch Avatar answered Nov 05 '22 05:11

Stephen Rauch


Df['employee']=Df['employee'].str.strip()
like image 43
Vipin Avatar answered Nov 05 '22 06:11

Vipin


The best and easiest way to remove blank whitespace in pandas dataframes is :-

df1 = pd.read_csv('input1.csv')

df1["employee_id"]  = df1["employee_id"].str.strip()

That's it

like image 27
Saeed Khan Avatar answered Nov 05 '22 05:11

Saeed Khan