Sim*_*ley 97 python numpy pandas
我在python pandas DataFrame中有一个列具有布尔值True/False值,但是为了进一步计算,我需要1/0表示.有快速的熊猫/ numpy方式吗?
编辑:下面的答案似乎没有在numpy的情况下,给定一个具有整数和True/False值的dtype=object数组,返回此类数组.为了在numpy中进行进一步的计算,我必须明确地设置np_values = np.array(df.values, dtype = np.float64).
Use*_*ser 204
只是非常明确地回答如何将单列布尔值转换为整数1或0的列的问题:
df.somecolumn = df.somecolumn.astype(int)
shu*_*l27 59
只需将Dataframe乘以1(int)
[1]: data = pd.DataFrame([[True, False, True], [False, False, True]])
[2]: print data
0 1 2
0 True False True
1 False False True
[3]: print data*1
0 1 2
0 1 0 1
1 0 0 1
Run Code Online (Sandbox Code Playgroud)
Gar*_*tty 43
True是1在Python,同样False是0*:
>>> True == 1
True
>>> False == 0
True
Run Code Online (Sandbox Code Playgroud)
您应该能够通过将它们视为数字来执行您想要的任何操作,因为它们是数字:
>>> issubclass(bool, int)
True
>>> True * 5
5
Run Code Online (Sandbox Code Playgroud)
所以要回答你的问题,没有必要的工作 - 你已经拥有了你想要的东西.
*注意我使用的是英文单词,而不是Python关键字is- True不会是任何随机的同一个对象1.
Jef*_*eff 21
您也可以直接在Frames上执行此操作
In [104]: df = DataFrame(dict(A = True, B = False),index=range(3))
In [105]: df
Out[105]:
A B
0 True False
1 True False
2 True False
In [106]: df.dtypes
Out[106]:
A bool
B bool
dtype: object
In [107]: df.astype(int)
Out[107]:
A B
0 1 0
1 1 0
2 1 0
In [108]: df.astype(int).dtypes
Out[108]:
A int64
B int64
dtype: object
Run Code Online (Sandbox Code Playgroud)
小智 11
这个问题特别提到了一个列,所以目前接受的答案是有效的。但是,它不能推广到多列。对于那些对通用解决方案感兴趣的人,请使用以下内容:
df.replace({False: 0, True: 1}, inplace=True)
Run Code Online (Sandbox Code Playgroud)
这适用于包含许多不同类型的列的 DataFrame,无论有多少是布尔值。
| 归档时间: |
|
| 查看次数: |
106195 次 |
| 最近记录: |