2016-07-01 18 views
1

trotz der umfangreichen Hilfe zur Verfügung gestellt here und here ich nicht in der Lage war, herauszufinden, wie folgendes zu tun:Pandas Gruppe von: Nutzung in diesem Fall

gegeben dieser Datensatz (df):

import pandas as pd 
improt numpy as np 

df = pd.DataFrame([['CORE1', 'CORE2', 'CORE3', 'CORE1', 'CORE2', 'CORE3', 'CORE1', 'CORE2', 'CORE3', ], 
        ['alfa', 'beta', 'gamma', 'alfa', 'beta', 'gamma', 'alfa', 'beta', 'gamma', ], 
        np.random.rand(9).tolist()], 
        index=['ptf', 'name', 'value']).transpose() 

name value ptf 
alfa 0.1 CORE1 
beta 0.7 CORE1 
gamma 0.2 CORE1 
alfa 0.3 CORE2 
beta 0.4 CORE2 
gamma 0.3 CORE2 
alfa 0.9 CORE3 
beta 0.05 CORE3 
gamma 0.05 CORE3 

wiederum in

 CORE1 CORE2 CORE3 
alfa 0.1 0.3 0.9 
beta 0.7 0.4 0.05 
gamma 0.2 0.3 0.05 

ich war irgendwo in den Linien von df.groupby(by='ptf') und etwas nach erraten. was genau zu verstehen ist.

Edit:

print(df.dtypes) 

# 1st - works but takes numerate index - not what I want 
print(df.pivot(columns='ptf', values='value')) 
# 2nd - textbook made - does not work 
print(df.pivot(index='name', columns='ptf', values='value')) 
# 3rd - same as 2nd but with different constructor 
print(pd.pivot_table(df, index='name', values='value', columns='ptf')) 

Jede Hilfe in dieser Angelegenheit?

+0

ich immer gerne [diese Seite] Punkt (http://www.nikgrozev.org/2015/07/01/reshaping-in-pandas-pivot-pivot- Table-Stack-und-Unstack-erklärt-mit-Bildern /) für eine gute Einführung in das Pivotieren und Stapeln. – IanS

Antwort

3

Verwendung pivot:

print (df.pivot(index='name', columns='ptf', values='value')) 
ptf CORE1 CORE2 CORE3 
name      
alfa  0.1 0.3 0.90 
beta  0.7 0.4 0.05 
gamma 0.2 0.3 0.05 
+0

es ist der richtige Ansatz, aber ich bekomme den gleichen Fehler einige Benutzer ecnounter hier (http://stackoverflow.com/questions/11232275/pandas-pivot-warning-about-repeated-entries-on-in-) ValueError: Index enthält doppelte Einträge , kann nicht umgestalten – Asher11

+0

Sie brauchen '(df.pivot_table (index = 'name', spalten = 'ptf', werte = 'wert'))' was verwendet 'aggfunc', default ist' aggfunc = np.mean' wenn duplikate. Bessere Erklärung mit Beispiel ist [hier] (http://stackoverflow.com/a/37436813/2901002) und in [docs] (http://pandas.pydata.org/pandas-docs/stable/reshaping.html#pivot -Tabellen). – jezrael

+0

versuchte das auch. 'Fehler in diesem Fall: pandas.core.base.DataError: Keine numerischen Typen zum aggregieren' – Asher11