大熊猫到斯塔塔不保留伯乐类型

时间:2019-03-13 10:01:12

标签: python pandas

当我将熊猫数据框导出为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

有没有一种方法可以保留系列的布尔类型?

1 个答案:

答案 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>])