2017-11-13 1 views

Antwort

1

Ich glaube, Sie Gruppen für neue Spalten Namen von cumcount müssen erstellen und dann neu zu gestalten, indem unstack:

df = df.set_index(['a', df.groupby('a').cumcount()])['b'].unstack() 
print (df) 
    0 1 2 
a    
10 1 6 11 
20 2 7 12 
30 3 8 13 
40 4 9 14 
50 5 10 15 

Für Wörterbuch Verwendung to_dict, aber Swap-Werte in set_index:

d = df.set_index([df.groupby('a').cumcount(), 'a'])['b'].unstack().to_dict('l') 
print (d) 

{40: [4, 9, 14], 10: [1, 6, 11], 20: [2, 7, 12], 50: [5, 10, 15], 30: [3, 8, 13]} 

Detail:

print (df.groupby('a').cumcount()) 
0  0 
1  0 
2  0 
3  0 
4  0 
5  1 
6  1 
7  1 
8  1 
9  1 
10 2 
11 2 
12 2 
13 2 
14 2 
dtype: int64 

Setup:

print (df) 
    a b 
0 10 1 
1 20 2 
2 30 3 
3 40 4 
4 50 5 
5 10 6 
6 20 7 
7 30 8 
8 40 9 
9 50 10 
10 10 11 
11 20 12 
12 30 13 
13 40 14 
14 50 15 
+0

Wie kann ich in diesem Fall ein Array wie {10: 1 6 11} erstellen? Ich muss es für alle von ihnen tun und dann ein Vertrauensintervall berechnen, ich werde CI finden aber bitte sagen Sie mir, wie man Transformation tut –

+1

Brauchen Sie Spalte von ersten 'a' Index für' 4' Spalten? Oder erstelle 'Wörterbuch' wie' {40: [4, 9, 14], 10: [1, 6, 11], 20: [2, 7, 12], 50: [5, 10, 15], 30: [3, 8, 13]} '? – jezrael

+0

Ja, ich brauche es in Form von Dictionary –

Verwandte Themen