Use np.whereto set your data based on simple logical criteria:
In [3]:
df = pd.DataFrame({'uld':np.random.randn(10)})
df
Out[3]:
uld
0 0.939662
1 -0.009132
2 -0.209096
3 -0.502926
4 0.587249
5 0.375806
6 -0.140995
7 0.002854
8 -0.875326
9 0.148876
In [4]:
df['uld'] = np.where(df['uld'] > 0, 1, 0)
df
Out[4]:
uld
0 1
1 0
2 0
3 0
4 1
5 1
6 0
7 1
8 0
9 1
What is the reason that you did not succeed:
In [7]:
if df['uld'] > 0:
df['uld'] = 1
else:
df['uld'] = 0
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-7-ec7d7aaa1c28> in <module>()
----> 1 if df['uld'] > 0:
2 df['uld'] = 1
3 else:
4 df['uld'] = 0
C:\WinPython-64bit-3.4.3.1\python-3.4.3.amd64\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
696 raise ValueError("The truth value of a {0} is ambiguous. "
697 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 698 .format(self.__class__.__name__))
699
700 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
, , True False, , , , . any, all .., df , , pandas : http://pandas.pydata.org/pandas-docs/dev/gotchas.html : ValueError: . a.any() a.all()
np.where , , , false , .
UPDATE
, int astype:
In [23]:
df['uld'] = (df['uld'] > 0).astype(int)
df
Out[23]:
uld
0 1
1 0
2 0
3 0
4 1
5 1
6 0
7 1
8 0
9 1