2017-06-01 1 views

Antwort

0

Sie verwenden grundsätzlich die Werte von existingcol als Spaltenindizes und gehen durch jede Zeile des Arrays 2D, um ein Element pro Zeile aus dem Array 2D auszuwählen. So können wir NumPy's integer array indexing verwenden, um die gewünschte neue Spalte zu erreichen -

col_idx = df.existingcol.values 
df['newcol'] = dim2_arr[np.arange(len(dim2_arr)), col_idx] 

Probelauf -

1) Eingänge:

In [311]: df 
Out[311]: 
    existingcol 
0   2 
1   0 
2   0 
3   1 
4   0 
5   2 
6   1 
7   4 
8   3 
9   3 

In [313]: dim2_arr 
Out[313]: 
array([[25, 75, 70, 45, 67], 
     [21, 85, 74, 68, 61], 
     [79, 33, 22, 77, 25], 
     [69, 31, 67, 11, 45], 
     [50, 12, 35, 55, 89], 
     [62, 59, 86, 55, 58], 
     [67, 41, 77, 88, 79], 
     [64, 30, 36, 25, 21], 
     [24, 73, 68, 84, 79], 
     [50, 53, 55, 71, 84]]) 

2) Verwenden Codes vorgeschlagen:

In [314]: col_idx = df.existingcol.values 

In [317]: df['newcol'] = dim2_arr[np.arange(len(dim2_arr)), col_idx] 

In [318]: df 
Out[318]: 
    existingcol newcol 
0   2  70 
1   0  21 
2   0  79 
3   1  31 
4   0  50 
5   2  86 
6   1  41 
7   4  21 
8   3  84 
9   3  71 
+1

Fantastische Antwort Divakar. Das hat perfekt funktioniert! Vielen Dank! –

+0

@DeanaH. Wenn dies Ihre Frage gelöst hat, können Sie sie akzeptieren, indem Sie auf das Häkchen neben der Lösung klicken. Weitere Informationen finden Sie hier - https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Divakar

Verwandte Themen