Mamy klasę i osobną funkcję taką o:
import pandas as pd
class M:
def __init__(self):
self.k = pd.DataFrame({"a":[1,2,3], "b":[2,3,4]})
self.v = pd.DataFrame({"aa":[11,22,33], "bb":[22,33,44]})
def generator(self):
for i in range(self.k.shape[1]):
yield self.k.iloc[:, i], self.v.iloc[:, i]
def transform(k, v):
"""
crazy function
"""
# complicated algorithm here...
# ...
# then:
return k
Chcę przeiterować generatorem klasę i na każdej iteracji nadpisać element klasy:
m = M()
for k, v in m.generator():
if k.sum() < 100:
v = transform(k, v)
display(m.k)
display(m.v)
Niestety m.k i m.v pzoostają bez zmian:
self.k = pd.DataFrame({"a":[1,2,3], "b":[2,3,4]})
self.v = pd.DataFrame({"aa":[11,22,33], "bb":[22,33,44]})
a chcę by po przeiterowaniu było:
self.k = pd.DataFrame({"a":[1,2,3], "b":[2,3,4]})
self.v = pd.DataFrame({"a":[1,2,3], "b":[2,3,4]})