Wie bekomme ich die gleichen Ergebnisse wie der folgende Code ohne Verwendung von for-Schleife: meine typischen Daten hat ~ 500k Reihen, und wie es ist, ist der Code zu zeitaufwendig.Aktualisierungszelle Wert von Duplikaten ohne Verwendung von für Schleife
data={'key1':[1,2,1,1,2,3,2,2],'key2':[2,2,2,2,2,4,2,2],'class':[5,10,'NaN','NaN','NaN',6,'NaN','NaN']}
frame = pd.DataFrame(data,columns=['key1','key2','class'])
Diese Datenrahmen enthält einige [key1,key2]
Duplikate, wie: [1,2]
und [2,2]
. Das erste Vorkommen des Duplikats hat einen endlichen Wert von 'class'
, während den anderen Duplikaten der Wert 'NaN' class
zugewiesen wird. Der folgende Code nimmt den 'class'
Wert des ersten Vorkommens und weist es den Duplikaten der gleichen Gruppe zu.
for name, group in frame.groupby(['key1', 'key2']):
listOfIndex = group.index
master_idx = listOfIndex[0]
frame['class'].loc[listOfIndex] = frame['class'].loc[master_idx]
key1 key2 class
0 1 2 5
1 2 2 10
2 1 2 5
3 1 2 5
4 2 2 10
5 3 4 6
6 2 2 10
7 2 2 10
Vielen Dank @jezrael. Das funktioniert gut. Ich musste Pandas aktualisieren, weil meine Version nicht 'sort_values' hatte – JMarc