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