我正在尝试使用pandas.read_sas()
以块的形式读取二进制压缩的SAS文件,并将每个块保存为单独的羽毛文件。
这是我的代码
import feather as fr
import pandas as pd
pdi = pd.read_sas("C:/data/test.sas7bdat", chunksize = 100000, iterator = True)
i = 1
for pdj in pdi:
fr.write_dataframe(pdj, 'C:/data/test' + str(i) + '.feather')
i = i + 1
但是我收到以下错误
ValueError Traceback(最近一次调用 最后)in() 1 i = 1 2 for pj中的pdj: ----> 3 fr.write_dataframe(pdj,' C:/ test' + str(i)+' .feather') 4 i = i + 1 5
〜\应用程序数据\本地\连续\ anaconda3 \ lib中\站点包\ pyarrow \ feather.py 在write_feather(df,dest)中 116 writer = FeatherWriter(dest) 117尝试: - > 118 writer.write(df) 119除外: 120#尝试确保资源已关闭
〜\应用程序数据\本地\连续\ anaconda3 \ lib中\站点包\ pyarrow \ feather.py 在写(自我,df) 94 95 elif inferred_type不在[' unicode',' string']中: ---> 96引发ValueError(msg) 97 98如果不是isinstance(name,six.string_types):
ValueError:无法使用dtype bytes
序列化名为SOME_ID的列0
我正在使用Windows 7和Python 3.6。当我检查它的大多数列'单元格包含在b'cell_value'
中,我认为这意味着列是二进制格式。
我是一个完整的Python初学者,所以不明白这是什么问题?
答案 0 :(得分:1)
编辑:看起来这是在最近版本中修补的错误: https://issues.apache.org/jira/browse/ARROW-1672 https://github.com/apache/arrow/commit/238881fae8530a1ae994eb0e283e4783d3dd2855
列名是字符串吗?你确定pdj的类型是pd.DataFrame吗?
限制
羽毛不支持熊猫的某些功能:
非字符串列名称
行索引
具有非同类数据的对象类型列