0
팬더에 메서드를 추가하려고하므로 데이터 프레임에 액세스 할 수 있으면 쉽게 사용할 수 있습니다. 나에게 던져 다음 예팬더가 메서드를 추가해도 직렬화가 지속되지 않습니다
import dill
class Foo:
def sayhello(self):
print("hello")
f = Foo()
dill.dump(f, open("./foo.pickle", "wb"))
f1 = dill.load(open("./foo.pickle", "r"))
f1.sayhello()
def addto(instance):
def decorator(f):
import types
f = types.MethodType(f, instance, instance.__class__)
setattr(instance, f.func_name, f)
return f
return decorator
@addto(f)
def saygoodbye(self):
print("goodbye")
dill.dump(f, open("./foo.pickle", "wb"))
f1 = dill.load(open("./foo.pickle", "r"))
f1.sayhello()
f1.saygoodbye()
import pandas as pd
df = pd.DataFrame([0,1])
@addto(df)
def saygoodbye(self):
print("goodbye")
dill.dump(df, open("./dframe.pickle", "wb"))
df1 = dill.load(open("./dframe.pickle", "r"))
df1.saygoodbye()
같이 그러나 직렬화는 방법을 "죽인다"는 AttributeError: 'DataFrame' object has no attribute 'saygoodbye'
1) 당신은 문제의 원인을 볼 수 있나요?
2) 데이터 프레임에서 추가 된 메소드를 직렬화하는 방법을 알고 있습니까?
감사합니다.
이것을 구현하는 데 데코레이터를 사용할 방법이 있습니까? 많은 데이터 프레임에 많은 함수가 있다고 가정하면 각 데이터 프레임에 대한 맞춤 클래스를 만드는 것이 복잡해 보입니다. – Damlatien
클래스 데코레이터와 같은 것이 있습니다 ... –
@MikeMcKerns Aww. 그것은 굉장. 가르쳐 줘서 고마워! – Peng