Ich habe ein DataFrame
die wie folgt aussieht:Wie "entwirren" Sie einen Datenrahmen mit den Werten der Zeilen?
class passed failed extra_teaching
A11 1 2 0.5
A12 2 1 0.7
ich zu ‚entwirren‘ will die DataFrame
, und die Informationen über die Klasse verlieren, aber die Informationen auf extra_teaching
halten, so dass ich am Ende für die jeweils mit einer Reihe nach oben einzelner Schüler, der bestanden hat.
So ist die DataFrame
sollte am Ende wie folgt suchen:
pass extra_teaching
1 0.5
0 0.5
0 0.5
1 0.7
1 0.7
0 0.7
Ich habe keine Ahnung, wie diese außer vielleicht in pandas
, zu tun, indem iterrows()
mit und manuell Zeilen in eine neue DataFrame
anhängt - hat ein jeder bekam sauberer Weg?
UPDATE:
ich versucht, dies scheint aber nicht sehr elegant zu arbeiten:
temp = []
df = df.set_index('class')
for idx in df.index:
row = df.loc[idx]
t = {'class': idx, 'extra_teaching': row['extra_teaching']}
for i in range(0, int(row['passed'])):
t['pass'] = 1
temp.append(t)
for i in range(0, int(row['failed'])):
t['pass'] = 0
temp.append(t)
df_exploded = pd.DataFrame(temp)
Make-Klasse Ihre Index, Schleife über jedes Element davon, berechnen Sie den Summenpass ed + für jede Zeile fehlgeschlagen und dann für jede Zeile einen Datenrahmen erstellt (z.B. jede Klasse) und verketten alle von ihnen. Sie möchten vielleicht eine Spalte für jede Klasse einführen, in der Sie den Pass-Vektor speichern, z. [1 0 0] und [1 1 0] in diesem Fall. Sollte von dort einfach sein – tschm
Wie werden die drei Spalten 'class',' passed' und 'failed' logisch in' pass' übersetzt? – Stefan
@Stefan ignorieren wir "Klasse", es ist nur da, um zu erklären, was die Daten sind. "bestanden" bedeutet immer "pass = 1", "fehlgeschlagen" bedeutet immer "pass = 0". – Richard