2017-02-03 3 views
1

Ich habe zwei Datenrahmen ein wie folgt aus:wählen aus einem Datenrahmen basierend auf einem anderen Datenrahmen

 point sector 
1  1   4 
2  2   5 
3  3   2 
4  4   1 
5  5   5 
6  6   1 
7  7   4 
8  8   3 
10  10   5 
11  11   2 
12  12   1 
13  13   3 
14  14   1 
15  15   4 
16  16   3 
17  17   2 
18  18   1 
19  19   1 
20  20   1 
21 alt 1   2 
22 alt 3   3 
23 alt 2   5 

Und die andere wie diese, wo der Eintritt in den Sektor I entspricht der Punkt aus kommen wollen.

p1 p2 p3 p4   
1 2 3 4 
1 2 3 5 
1 2 4 5 
1 3 4 5 
2 3 4 5 

Was ich tun möchte, ist eine andere Datenrahmen erstellen, die mir eine zufällig ausgewählte Gruppe von Punkten aus dem ersten Datenrahmen auf ihrem Sektor auf Basis geben wird.

Zum Beispiel:

 p1 p2 p3 p4 
lane 1: 12 3 8 7 

Wie Sie die Zahlen von Spur 1 haben alle Sektoren sehen können, die in Zeile 1 des zweiten Datenrahmen sind. Ich habe versucht, df.loc zu verwenden, aber fragte mich, ob es einen besseren Weg gibt?

Antwort

0

Für jede Zeile holen Daten aus dem ersten Datenrahmen und zufälliger Wahl es:

df2.apply(lambda r: df.loc[r].groupby(level=0).point.apply(np.random.choice).values, axis=1) 
Out[132]: 
     p1  p2  p3  p4 
0  4  11 alt 3  1 
1  6  11  13 alt 2 
2  4  17  7 alt 2 
3  19 alt 3  15  5 
4 alt 1  13  7  10 
Verwandte Themen