使用1和0将布尔数据帧写入csv

jay*_*elm 5 python csv pandas

我有一个带有布尔值的pandas数据帧,即

    col1   col2
1   True   False
2   False  True
3   True   True
Run Code Online (Sandbox Code Playgroud)

当我使用pandas的DataFrame.to_csv方法时,结果数据框看起来像

,col1,col2
1,True,False
2,False,True
3,True,True
Run Code Online (Sandbox Code Playgroud)

有没有办法将布尔变量写为1和0(更节省空间),即

,col1,col2
1,1,0
2,0,1
3,1,1
Run Code Online (Sandbox Code Playgroud)

无需先抛出整个数据帧?

EdC*_*ica 8

您只需将dtypedf的int转换True为将转换为1False即可0

In [16]:
df.astype(int)

Out[16]:
   col1  col2
1     1     0
2     0     1
3     1     1
Run Code Online (Sandbox Code Playgroud)


Leb*_*Leb 6

实际上它非常简单,只需将df乘以1即可.

import pandas as pd
import io

data = """
    col1   col2
1   True   False
2   False  True
3   True   True
    """

df = pd.read_csv(io.StringIO(data), delimiter='\s+')

print(df*1)
Run Code Online (Sandbox Code Playgroud)

这会将其更改为:

   col1  col2
1     1     0
2     0     1
3     1     1
Run Code Online (Sandbox Code Playgroud)

从那里你可以通过做df = df*1或从代码中重新分配df df2 = df*1.第一个将防止重复复制.