глубокая копия объекта StyleFrame - PullRequest
1 голос
/ 07 июля 2019

Как я могу сделать мелкую или глубокую копию объекта StyleFrame? Когда я использую copy.copy (sf) или copy.deepcopy (sf), я получаю сообщение об ошибке: «RecursionError: максимальная глубина рекурсии превышена при вызове объекта Python»

import copy
from StyleFrame import StyleFrame
import pandas as pd
df=pd.DataFrame([list('abc')])
sf=StyleFrame(df)
copy.copy(sf)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\python\python373\lib\copy.py", line 106, in copy
    return _reconstruct(x, None, *rv)
  File "C:\python\python373\lib\copy.py", line 281, in _reconstruct
    if hasattr(y, '__setstate__'):
  File "C:\python\python373_vm1\lib\site-packages\StyleFrame\style_frame.py", line 121, in __getattr__
    if attr in self.data_df.columns:
  File "C:\python\python373_vm1\lib\site-packages\StyleFrame\style_frame.py", line 121, in __getattr__
    if attr in self.data_df.columns:
  File "C:\python\python373_vm1\lib\site-packages\StyleFrame\style_frame.py", line 121, in __getattr__
    if attr in self.data_df.columns:
  [Previous line repeated 495 more times]
RecursionError: maximum recursion depth exceeded while calling a Python object

1 Ответ

2 голосов
/ 07 июля 2019

Просто передайте исходный объект StyleFrame в StyleFrame.Внутренне он будет глубоко копировать базовый фрейм данных, а также будет копировать некоторые внутренние атрибуты.

sf = StyleFrame({'a': [1, 2]})
print(id(sf))
new_sf = StyleFrame(sf)
print(id(new_sf))

Outputs

1971232017152
1971267198144
...