Как читать бинарные сжатые файлы SAS порциями, используя panda.read_sas, и сохранять как перо

Я пытаюсь использовать 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 (последний вызов был последним) в () 1 i = 1 2 для pdj в pdi: ----> 3 fr.write_dataframe(pdj, 'C:/test' + str(i) + '.feather') 4 я = я + 1 5

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pyarrow\feather.py в write_feather(df, dest) 116 writer = FeatherWriter(dest) 117 try: -> 118 writer.write(df) 119 кроме: 120 # Попробуйте убедиться, что ресурс закрыт

~\AppData\Local\Continuum\anaconda3\lib\site-packages\pyarrow\feather.py в записи (self, df) 94 95 elif inferred_type не в ['unicode', 'string']: ---> 96 повышение ValueError(msg) 97 98, если не isinstance (name, six.string_types):

ValueError: невозможно сериализовать столбец 0 с именем SOME_ID с байтами dtype

Я использую Windows 7 и Python 3.6. Когда я проверяю его, большинство ячеек столбцов оборачиваются b'cell_value' Я предполагаю, что столбцы в двоичном формате.

Я начинающий Python, так что не понимаю, в чем проблема?

1 ответ

Изменить: похоже, что это была ошибка, исправленная в недавней версии: https://issues.apache.org/jira/browse/ARROW-1672 https://github.com/apache/arrow/commit/238881fae8530a1ae994eb0e283e4783d3dd2855

Являются ли имена столбцов строками? Вы уверены, что pdj имеет тип pd.DataFrame?

Ограничения

Некоторые функции панд не поддерживаются в Feather:

Нестрочные имена столбцов

Строковые индексы

Столбцы объектного типа с неоднородными данными

Другие вопросы по тегам