Ich habe den nächsten Pandas-Datenrahmen:
x_1 x_2 x_3 x_4 col_to_replace cor_factor 1 2 3 4 x_2 1 3 3 5 1 x_1 6 2 2 0 0 x_3 0 ...
Ich möchte die Spalte cor_factor
中的值更新保存在 col_to_replace
中的名称列,并将结果保存在相应的列以及 car_factor
verwenden.
Einige (hässliche) Lösungen könnten sein:
for i in len(df.shape[0]): df[df['col_to_replace']].iloc[i] = df[df['col_to_replace']].iloc[i] - df['cor_factor'].iloc[i] df['cor_factor'].iloc[i] = df['cor_factor'].iloc[i] - df[df['col_to_replace']].iloc[i]
Diese Methode ist definitiv nicht zeitsparend. Ich suche nach einer schnelleren Lösung.
Die Ausgabe vondf sollte so aussehen:
x_1 x_2 x_3 x_4 col_to_replace cor_factor 1 1 3 4 x_2 -1 -3 3 5 1 x_1 3 2 2 0 0 x_3 0 ...
Korrigieren Sie die letzte Spalte mit pivot
更正 x_
Wert und Indexsuche. Da sich Werte ändern, kopieren Sie unbedingt Folgendes, bevor Sie es ändern:
# perform indexing lookup # save the value for later idx, cols = pd.factorize(df['col_to_replace']) corr = df.reindex(cols, axis=1).to_numpy()[np.arange(len(df)), idx] # pivot and subtract the factor # ensure original order of the columns cols = df.columns.intersection(cols, sort=false) df[cols] = df[cols].sub(df.pivot(columns='col_to_replace', values='cor_factor'), fill_value=0).convert_dtypes() # correct with the saved "corr" df['cor_factor'] -= corr
Ausgabe:
x_1 x_2 x_3 x_4 col_to_replace cor_factor 0 1 1 3 4 x_2 -1 1 -3 3 5 1 x_1 3 2 2 2 0 0 x_3 0
Das obige ist der detaillierte Inhalt vonAktualisieren Sie Werte in DF basierend auf Spaltennamen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!