当我将熊猫数据框导出为Stata的.dta
格式时,加载此数据集后,所有布尔变量都将丢失:
import pandas as pd
import numpy as np
df = pd.DataFrame({'a': np.random.randn(100)})
df['positive'] = df['a'] > 0
df.to_stata('~/test.dta')
print(df['positive'].head())
test = pd.read_stata('~/test.dta', convert_categoricals=False)
print(test['positive'].head())
此输出为:
0 True
1 True
2 True
3 True
4 False
Name: positive, dtype: bool
0 1
1 1
2 1
3 1
4 0
Name: positive, dtype: int8
有没有一种方法可以保留系列的布尔类型?
答案 0 :(得分:1)
您好,请在to_stata函数中使用convert_strl参数。 这样做是为了给列名列表提供转换为Stata StrL格式的字符串列。仅当版本为117时可用。如果字符串的字符数超过8个且重复值,则以StrL格式存储字符串会生成较小的dta文件。 在0.23.0版中。
df.to_stata('~/test.dta', version=117, convert_strl=[<the Column the you have the boolean valu>])