Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用1和0将布尔数据帧写入csv_Python_Csv_Pandas - Fatal编程技术网

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

Python 使用1和0将布尔数据帧写入csv,python,csv,pandas,Python,Csv,Pandas,我有一个带有布尔值的数据框,即 col1 col2 1 True False 2 False True 3 True True 当我使用pandas的DataFrame.to_csv方法时,生成的数据帧如下所示 ,col1,col2 1,True,False 2,False,True 3,True,True 是否有方法将布尔变量写入1和0(更节省空间),即 不必首先强制转换整个数据帧?实际上非常简单,只需将df乘以1即可 import pandas as p

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

    col1   col2
1   True   False
2   False  True
3   True   True
当我使用pandas的DataFrame.to_csv方法时,生成的数据帧如下所示

,col1,col2
1,True,False
2,False,True
3,True,True
是否有方法将布尔变量写入1和0(更节省空间),即


不必首先强制转换整个数据帧?

实际上非常简单,只需将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。第一个将防止重复复制。

您只需将df的
dtype
转换为
int
,这将
True
转换为
1
False
转换为
0

In [16]:
df.astype(int)

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

这很好,因为它还保留了原来的字符串。我更喜欢这个解决方案,而不是@Leb的解决方案,它更显式。
In [16]:
df.astype(int)

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