2
sich das folgende pandas Datenrahmen (df
):Pandas Datenrahmen: Zuordnung von Werten gemäß Rängen auf Zeilenebene
index A B C D E F G weights
1 NaN 1 NaN NaN NaN 3 2 [0.6 , 0.2 , 0.2]
2 3 2 NaN 1 NaN NaN NaN [0.5 , 0.4 , 0.1]
3 NaN NaN 1 2 3 NaN NaN [0.8 , 0.1 , 0.1]
4 NaN 3 1 NaN NaN 2 NaN [0.9 , 0.1 , 0.0]
gewünschten Ausgang (Werte abgestimmt, um ihre entsprechenden Gewichte auf Zeilenebene):
1 NaN 0.6 NaN NaN NaN 0.2 0.2
2 0.1 0.4 NaN 0.5 NaN NaN NaN
3 NaN NaN 0.8 0.1 0.1 NaN NaN
4 NaN 0.0 0.9 NaN NaN 0.1 NaN
Meine aktuelle Lösung:
def assign_weights(row):
for i in range(1,4):
row.replace(i, row.weights[i-1], inplace=True)
return row
df.apply(assign_weights, axis = 1)
gibt es einen schnelleren Weg (für einen großen Datenrahmen mit mehr Gewichtungen zugewiesen werden)?
gute Wahl. Das ergibt eine Laufzeitverbesserung von 15-20% für mich. –