Ich versuche, eine "richtig füllen" Excel-ähnliche Funktion zu replizieren, die die Werte rechts füllt, bis der nächste Wert nicht null/nan/empty ist. Diese "Rechts-Füllen" Übung ist nur dann durchzuführen, wenn der Wert in der unmittelbar folgenden Zeile nicht leer oder "nan" ist. Darüber hinaus muss dies für jede Gruppe erledigt werden. Ich habe den folgenden Pandas-Datensatz. Meine aktuelle Eingabetabelle ist "have". Meine Ausgabetabelle ist "wollen".Python Pandas richtige Füllwerte basierend auf Gruppen
Ich bin nur ein Anfänger in Python. So würde jede Hilfe geschätzt werden. Auch für diejenigen, die diese Operation möchte auf eine werden, indem Gruppenoperation durchgeführt, Daten wie folgt: Table „haben“, wie er mit Gruppierungsfeld „Gruppen“ folgt:
import pandas as pd
have = pd.DataFrame({ \
"groups": pd.Series(["group1","group1","group1","group2","group2","group2"]) \
,"0": pd.Series(["abc","1","something here","abc2","1","something here"]) \
,"1": pd.Series(["","2","something here","","","something here"]) \
,"2": pd.Series(["","3","something here","","3","something here"]) \
,"3": pd.Series(["something","1","something here","something","1","something here"]) \
,"4": pd.Series(["","2","something here","","2","something here"]) \
,"5": pd.Series(["","","something here","","","something here"]) \
,"6": pd.Series(["","","something here","","","something here"]) \
,"7": pd.Series(["cdf","5","something here","mnop","5","something here"]) \
,"8": pd.Series(["","6","something here","","6","something here"]) \
,"9": pd.Series(["xyz","1","something here","xyz","1","something here"]) \
})
Tabelle „wollen“ mit Gruppierungsfelder "Gruppen":
import pandas as pd
want = pd.DataFrame({ \
"groups": pd.Series(["group1","group1","group1","group2","group2","group2"]) \
,"0": pd.Series(["abc","1","something here","anything","1","something here"]) \
,"1": pd.Series(["abc","2","something here"," anything ","2","something here"]) \
,"2": pd.Series(["abc","3","something here"," anything ","3","something here"]) \
,"3": pd.Series(["something","1","something here","","","something here"]) \
,"4": pd.Series(["something ","2","something here","","","something here"]) \
,"5": pd.Series(["","","something here","","","something here"]) \
,"6": pd.Series(["","","something here","","","something here"]) \
,"7": pd.Series(["cdf","5","something here","mnop","5","something here"]) \
,"8": pd.Series(["cdf ","6","something here"," mnop ","6","something here"]) \
,"9": pd.Series(["xyz","1","something here","xyz","1","something here"]) \
})
ich habe versucht, diesen Code zu verwenden, aber ich bin immer noch versuchen, vertraut mir mit groupby
und apply
Aussagen:
grouped=have.groupby('groups')
have.groupby('groups').apply(lambda g: have.loc[g].isnull())
#cond = have.loc[1].isnull() | have.loc[1].ne('')
want.loc[0, cond] = want.loc[0, cond].str.strip().replace('', None)
want
Danke piRSquared. U Genie :) – Seb