1

我有一个保存到泡菜的数据框(还有一堆其他的东西,作为字典)。使用 pandas 1.1.5 版时已保存。

我正在尝试使用 1.0.1 版本打开它,但出现以下错误

File "<stdin>", line 1, in <module>
  File "/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py", line 5272, in __getattr__
    if self._info_axis._can_hold_identifiers_and_holds_name(name):
  File "/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py", line 5272, in __getattr__
    if self._info_axis._can_hold_identifiers_and_holds_name(name):
  File "/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py", line 5272, in __getattr__
    if self._info_axis._can_hold_identifiers_and_holds_name(name):
  [Previous line repeated 493 more times]
  File "/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py", line 493, in _info_axis
    return getattr(self, self._info_axis_name)
  File "/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py", line 5270, in __getattr__
    return object.__getattribute__(self, name)
  File "pandas/_libs/properties.pyx", line 63, in pandas._libs.properties.AxisProperty.__get__
  File "/opt/conda/lib/python3.7/site-packages/pandas/core/generic.py", line 5270, in __getattr__
    return object.__getattribute__(self, name)
RecursionError: maximum recursion depth exceeded while calling a Python object

有没有办法克服这个错误?我可以再次保存数据框,但不能在两台计算机上降级或升级版本。

谢谢

4

1 回答 1

2

我无法复制您的确切错误,但是当我尝试使用 pandas v1.0.1 读取由 pandas v1.1.5 创建的泡菜文件时,我得到了另一个错误。我能够通过使用羽毛格式保存文件来解决这个问题。示例代码:-

In [23]: cake # in version v1.1.5
Out[23]: 
     replicate recipe  temperature  angle  temp
1            1      A          175     42   175
2            1      A          185     46   185
3            1      A          195     47   195
4            1      A          205     39   205
5            1      A          215     53   215
..         ...    ...          ...    ...   ...
266         15      C          185     28   185
267         15      C          195     25   195
268         15      C          205     25   205
269         15      C          215     31   215
270         15      C          225     25   225

In [24]: cake.reset_index().to_feather("cake.feather")

在 v1.0.1 中读取文件:

In [15]: cake = pd.read_feather("cake.feather")
In [16]: cake
Out[16]: 
     index  replicate recipe  temperature  angle  temp
0        1          1      A          175     42   175
1        2          1      A          185     46   185
2        3          1      A          195     47   195
3        4          1      A          205     39   205
4        5          1      A          215     53   215
..     ...        ...    ...          ...    ...   ...
265    266         15      C          185     28   185
266    267         15      C          195     25   195
267    268         15      C          205     25   205
268    269         15      C          215     31   215
269    270         15      C          225     25   225

In [17]: pd.__version__
Out[17]: '1.0.1'

In [18]: cake.set_index('index') # To set the index

这种方法的缺点是对羽毛二进制格式的额外依赖pyarrow和保存要求您像我上面所做的那样重置索引。

于 2022-01-09T07:11:51.917 回答