Pyd
Pyd

Reputation: 6159

how to remove 0's in a datacolumn in a dataframe in python

I have a df,

 dff=pd.DataFrame({"Name":["sri","kumar","raj"],"values":[1,0,0]})


    Name    values
    sri     1
    kumar   0
    raj     0

I am trying to replace 0 with spaces " "

I tried,

  dff["values"].astype(str).replace(0," ")

but still the values are same

my desired df,

    Name    values
    sri     1
    kumar   " "
    raj     " " 

Upvotes: 2

Views: 143

Answers (5)

piRSquared
piRSquared

Reputation: 294288

Option 1
Use astype(bool) in pd.Series.where

dff.assign(values=dff['values'].where(dff['values'].astype(bool), ''))

    Name values
0    sri      1
1  kumar       
2    raj       

Option 2
Reconstruct with np.where

pd.DataFrame(np.where(dff.eq(0), '', dff), dff.index, dff.columns)

    Name values
0    sri      1
1  kumar       
2    raj       

Upvotes: 2

Bhaskar Dhariyal
Bhaskar Dhariyal

Reputation: 1395

This works for me

import pandas as pd
dff=pd.DataFrame({"Name":["sri","kumar","raj"],"values":[1,0,0]})
dff['values'].loc[dff['values']==0]='" "'

Upvotes: 1

jezrael
jezrael

Reputation: 862691

Replace integer 0 or string '0', because astype(str) convert integers to strings:

dff["values"] = dff["values"].replace(0," ")

Or:

dff["values"] = dff["values"].astype(str).replace('0'," ")

Upvotes: 2

Ankur Ankan
Ankur Ankan

Reputation: 3066

You can try this:

In [40]: dff.ix[dff['values']==0, 'values'] = ' '

In [41]: dff
Out[41]: 
    Name values
0    sri      1
1  kumar       
2    raj      

Upvotes: 1

Sanket
Sanket

Reputation: 745

You can use following

DataFrame.replace(
        to_replace=None,
        value=None,
        inplace=False,
        limit=None,
        regex=False, 
        method='pad',
        axis=None)

In your case,

dff['values'].replace(
    to_replace=[0],
    value=' ',
    inplace=True
)

Upvotes: 4

Related Questions