我正在尝试使用pandas函数read_SAS从.sas7bdat格式的SAS读取数据:
import pandas as pd
df = pd.read_sas('D:/input/houses.sas7bdat', format = 'sas7bdat')
df.head()
在df dataframe中有两种数据类型:float64和object。我完全满意float64数据类型,因此可以自由地将其转换为int、string等。 问题在于对象数据类型,我可以在如下包装的df数据框中看到:
b'Text'
或者像这样:
b'12345'
而不是
Text
或者
12345
我不能将其分别转换为string或int或“normal”对象数据类型。另外,我不能用切片或替换技术来消除b''。所以我不能使用对象数据类型的列。 求你了,告诉我怎样才能摆脱b'。
添加这个
encoding="utf-8"
因此,行如下:
pd.read_sas()
中的encoding
参数导致我有非常大的数据帧,这会导致我出现与内存相关的错误。处理这个问题的另一种方法是将字节字符串
convert
转换成另一种编码(例如utf8
)。示例:
数据帧示例:
将字节字符串转换为字符串:
输出:
有用的链接:
Pandas Series.str.decode() page of GeeksforGeeks(我找到解决方案的地方)
What is the difference between a string and a byte string?
首先,找出sas数据集编码。 在SAS中,对数据集运行proc contents。检查“编码”。在我的例子中,我的编码是“latin1 Western(ISO)”。然后输入编码:
相关问题 更多 >
编程相关推荐