2016-04-26 11 views
3

ich einen Datenrahmen haben eine kategorische Variable in eine Spalte und eine kontinuierliche Variable in einer anderen Spalte wie so enthält:Pandas Schwenkdatenrahmen mit ungleichen Spalten

gender contVar 
    Male  22379 
    Female 24523 
    Female 23421 
    Male  23831 
    Male  29234 

Ich möchte einen Tisch bekommen, wie so:

Male Female 
    22379 24523 
    23831 23421 
    23831 
    29234 

Ist das in Pandas möglich? Wenn ich tun:

df.pivot(index = df.index.tolist(), columns='gender', values='contVar') 

ich, dass der Index außerhalb der Grenzen ist (natürlich, da Reihen Arent, da Indizes sind, aber ich nehme an, dass seine weil die Anzahl der Zeilen in jeder Spalte sind nicht gleich). Irgendwelche Ideen werden geschätzt.

Antwort

2

können Sie tun:

pd.concat([pd.DataFrame({g:d.contVar.tolist()}) for g,d in df.groupby('gender')], axis=1) 

Out[416]: 
    Female Male 
0 24523 22379 
1 23421 23831 
2  NaN 29234 
+0

Oder ist es möglich, zwei getrennte Listen zu erhalten? Ich brauche die gepinnten Daten in einer Tabelle nicht wirklich (und fülle leere Zellen mit NaN), sondern sogar separate Listen. – dter

+0

Ich benutze Pivot hier nicht, und ich konstruiere tatsächlich eine Liste von Datenrahmen (eine für Frau, die andere für männlich), so dass Sie auf 'separate' Datenrahmen von dieser Liste zugreifen können. –

+1

'[d.contVar.tolist() für g, d in df.groupby ('gender')]' dies wird Ihnen eine Liste von zwei Listen wie dieser geben [[24523, 23421], [22379, 23831, 29234]] ' – Abbas