Aktualisieren Sie Werte in DF basierend auf Spaltennamen

WBOY
Freigeben: 2024-02-09 13:00:15
nach vorne
572 Leute haben es durchsucht

根据列名更新 DF 中的值

Frageninhalt

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
...
Nach dem Login kopieren

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]
Nach dem Login kopieren

Diese Methode ist definitiv nicht zeitsparend. Ich suche nach einer schnelleren Lösung.

Die Ausgabe von

df 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
...
Nach dem Login kopieren


Richtige Antwort


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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!