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

时间:2015-11-09 01:09:14

标签: python csv pandas

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

int totalvictories = 0;
while (!ws(readFile).eof()){
    readFile >> data.name
        >> data.nbmatches
        >> data.nbvictories;

    data.nbvictories += totalvictories;
    cout << data.nbvictories << endl;
    cout << totalvictories << endl;
    cout << endl;
}

当我使用pandas' col1 col2 1 True False 2 False True 3 True True 方法时,结果数据框看起来像

DataFrame.to_csv

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

,col1,col2
1,True,False
2,False,True
3,True,True

无需先抛出整个数据框?

2 个答案:

答案 0 :(得分: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)

这会将其更改为:

   col1  col2
1     1     0
2     0     1
3     1     1

通过执行df = df*1df2 = df*1,您可以从代码中重新分配df。第一个是防止重复复制。

答案 1 :(得分:6)

您只需将df的dtype转换为int即可将True转换为1,将False转换为0:< / p>

In [16]:
df.astype(int)

Out[16]:
   col1  col2
1     1     0
2     0     1
3     1     1