我有一个带有布尔值的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
无需先抛出整个数据框?
答案 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*1
或df2 = 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