我在python pandas DataFrame中有一个列,具有布尔True/False值,但对于进一步的计算,我需要1/0表示。有没有一种快速的熊猫/numpy方法来做到这一点?


当前回答

只需将你的数据帧乘以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

其他回答

我必须将FAKE/REAL映射到0/1,但找不到正确的答案。

请在下面找到如何将列名'type'的值为FAKE/REAL映射为0/1(注意:类似的可以应用于任何列名和值)

df.loc[df['type'] == 'FAKE', 'type'] = 0
df.loc[df['type'] == 'REAL', 'type'] = 1

你可以为你的数据帧使用一个转换:

df = pd.DataFrame(my_data condition)

将True/False转换为1/0

df = df*1

这个问题特别提到了一个列,所以目前公认的答案是有效的。但是,它不能泛化到多个列。对于那些对通用解决方案感兴趣的人,请使用以下方法:

df.replace({False: 0, True: 1}, inplace=True)

这适用于包含许多不同类型列的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

将布尔值的单列转换为整数1或0的列的简洁方法:

df["somecolumn"] = df["somecolumn"].astype(int)