Obecnie używam Spyder IDE. Próbuję zastosować funkcję kompilacji własnej sfill do mojej ramki danych w oparciu o różne grupy. Za każdym razem, gdy tworzę tę funkcję, pojawia się następujący błąd:
TypeError: sfill () przyjmuje dokładnie 1 argument (2 podane)
Jestem pewien, że funkcja sfill () działa poprawnie po uruchomieniu samodzielnym. Co ja robię źle? Jak pozwolić Pythonowi wyświetlić ramkę danych chcieć bez użycia instrukcji globalna potrzeba w eksploratorze zmiennych? Jak skorzystać ze zwrotu w tej chwili?
Mój kod jest następujący:
import pandas as pd
have = pd.DataFrame({
"groups": pd.Series(["group1","group1","group1","group2","group2","group2"])
,"a0": pd.Series(["abc","1","something here","abc2","1","something here"])
,"a1": pd.Series(["","2","something here","","","something here"])
,"a2": pd.Series(["","3","something here","","3","something here"])
,"a3": pd.Series(["something","1","something here","something","1","something here"])
,"a4": pd.Series(["","2","something here","","2","something here"])
,"a5": pd.Series(["","","something here","","","something here"])
,"a6": pd.Series(["","","something here","","","something here"])
,"a7": pd.Series(["cdf","5","something here","mnop","5","something here"])
,"a8": pd.Series(["","6","something here","","6","something here"])
,"a9": pd.Series(["xyz","1","something here","xyz","1","something here"])
})
class main(object):
def sfill(vector):
vector = vector.copy()
vector.i0, vector.i1 = vector.index[0], vector.index[1]
vector.cond = have.loc[vector.i1].ne("")
vector.loc[vector.i0, vector.cond] = vector.loc[vector.i0, vector.cond].str.strip().replace("", None)
return vector
def Development_plan(selfdev):
global want
want=have.groupby("groups", group_keys=False, sort=False).apply(selfdev.sfill)
a=main()
a.Development_plan() # this is where the issue exists
Dzięki.
Odpowiedzi:
3 dla odpowiedzi № 1funkcje w klasie powinny przejąć self
jako pierwszy argument
def sfill(self, vector):
...
kiedy zadzwonisz selfdev.sfill(soemthing)
to faktycznie dzwoni sfill(selfdev, something)
self
jest tylko konwencją nazewnictwa, w Development_plan () używasz do tego selfdev.