Reputation: 6159
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
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
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
Reputation: 862691
Replace integer
0
or string
'0'
, because astype(str)
convert integer
s to string
s:
dff["values"] = dff["values"].replace(0," ")
Or:
dff["values"] = dff["values"].astype(str).replace('0'," ")
Upvotes: 2
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
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