GOOGLE ADS

Sonntag, 24. April 2022

Gruppieren Sie Fragen basierend auf einem Regex-Muster und aggregieren Sie Ergebnisse mit Pandas

Ich versuche, aggregierte Feedback-Werte basierend auf ihren Eigenschaften zu gruppieren. Beispielsweise erstellt der folgende Code einen Datenrahmen, der Informationen von Einzelpersonen und ihre Feedback-Punktzahlen für Fragen sammelt, die sich auf bestimmte jährliche Berührungspunkte beziehen.

import pandas as pd
import numpy as np
dummydf = pd.DataFrame({'ID': [2,15,32,4,9,12,16,10,3,7],
'1-year feedback qs A': [3,2,3,4,3,2,1,3,4,5],
'1-year feedback qs B': [1,1,2,4,np.NaN,3,3,3,2,5],
'2-year feedback qs A': [2,2,3,4,3,5,3,2,2,4],
'2-year feedback qs B': [2,3,3,3,4,5,3,np.NaN,5,5],
'Gender': [0,0,0,1,0,1,1,0,0,1],
'Location': ['py','py','py','va','jk','ce','ce','va','jk','jk']})
print(dummydf)

Für jede ID muss ich die Werte der 1-Jahres-Fragen zu einem aggregierten Mittelwert zusammenfassen, die Berührungspunkte der 2-Jahres-Fragen zusammen und so weiter, während die restlichen Variablen intakt bleiben. Was ist der beste Weg, um das Ergebnis zu erzielen?

Was ich versucht habe, ist -

groups = dummydf.groupby(by=['ID'])
groups.apply(lambda g: g[g.filter(regex='1-') == g.filter(regex='1-').mean()])

was mir nicht das gewünschte Ergebnis bringt


Lösung des Problems

Da die ID eindeutig ist, müssen Sie sie nicht gruppieren. Sie können einfach verwenden:

for i in range(1,2):
dummydf['mean_year_'+str(i)] = dummydf[[x for x in dummydf.columns if str(i) in x]].mean(axis=1)

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...