Ich habe eine Berechnung, die ich aggregieren muss, aber es wird nicht mit GROUPBY in PANDAs arbeiten. Also muss ich die Gruppen manuell durchlaufen. Die Gruppen werden durch 2 Felder von "Objekt" -Typ-Werten definiert, die im Wesentlichen die Kategorien sind.Python-Liste verwenden, um bedingte Pandas Aussage zu setzen
Ich denke, eine elegante Lösung kann sein, 2 Listen aus den eindeutigen Werten in den 2 unabhängigen Spalten mit kategorischen Werten zu erstellen. Dann erstellen Sie eine 'for' -Schleife, und verwenden Sie Zeichenfolge Werte oder etwas, durchlaufen Sie meine PANDAs bedingten Anweisung, um einen DataFrame zu erstellen; was dann schließlich mein aggregiertes calc. Dies geschieht immer wieder, wobei nur der Datenrahmen mit der Aggregatberechnung im Speicher gehalten wird, wobei ein Zählerwert wie '1' an das Ende von 'df_' angehängt wird. Um nicht jedes Mal durch die Schleife zu überschreiben. Hier ist mein Pseudo-Code.
cats1=['blue','yellow','pink']
cats2=['dog','horse','cow','sheep']
lengths=list(itertools.product(cats1,cats2))
for x,y,z in zip(cats1,cats2,lengths):
df = main_df[ (main_df['col2']==x) & (main_df['col3']==y) ]
df['aggcalc'] = df['col1'].agg.mean()
locals()['df_{0}'.format(z)] = df
Die letzte Zeile wird hoffentlich den persistenten Datenrahmen basierend auf der Anzahl der Kombinationen von 'cats1' und 'cats2' erstellen. dh, "df_1", "df_2", usw. ... Dann wird das "df" in den ersten 2 Zeilen jedes Mal in der "for" -Schleife überschrieben. Ist das richtig Denken?
EDIT .............. Hier ist eine einfachere Möglichkeit, es zu betrachten. Ich möchte alle möglichen Kombinationen aus 2 unabhängigen Listen mit unterschiedlicher Länge durchlaufen. Zusätzlich möchte ich in jeder Schleife einen 'Zähler', z 'haben. Dies ist der aktuelle Weg, dies und die anschließende Ausgabe zu schreiben:
for x,y in list(itertools.product(cats1,cats2)):
print x,y
blue dog
blue horse
blue cow
blue sheep
yellow dog
yellow horse
yellow cow
yellow sheep
pink dog
pink horse
pink cow
pink sheep
Wie kann ich mit diesem Ausgang ein ‚z‘ Variable hinzuzufügen, die die Ausgabe aussehen wie
blue dog 0
blue horse 1
blue cow 2
blue sheep 3
yellow dog 4
... etc machen
warum versuchst du es nicht und siehst? – Julien
Ich bin sicher, wenn Sie einen Beispieldatensatz veröffentlichen und Ihre gewünschte Ausgabe zeigen, können wir einen besseren Weg vorschlagen. – ayhan