2017-05-02 5 views
2

Sagen wir, ich habe einen DataFrame nennen es one wie folgt aus:Multiply alle Zeilen in einem Pandas Datenrahmen von Wörterbuch

non_multiply_col col_1 col_2 
A Name   1  3 

und dict wie dies nennen es two:

{'col_1': 4, 'col_2': 5} 

gibt es einen Weg dass ich alle Zeilen von one mit den Werten in two für die Spalten multiplizieren kann, die durch die Schlüssel two definiert werden, so würde das Ergebnis lauten:

non_multiply_col col_1 col_2 
A Name   4  15 

Ich versuchte mit multiply, aber ich bin nicht wirklich auf der Suche nach etwas Bestimmtes. Vielleicht verstehe ich nicht, wie man multiply richtig verwendet.

Dank

Antwort

3

mul/mehrfach funktioniert gut, wenn das Wörterbuch auf eine Serie umgewandelt wird:

d = {'col_1': 4, 'col_2': 5} 

df.mul(pd.Series(d), axis=1) 

# col_1 col_2 
#0  4  15 

Falls Sie mehrere Spalten in dem Datenrahmen haben als das Wörterbuch:

df = pd.DataFrame([{'col_1': 1, 'col_2': 3, 'col_3': 4}]) 
d = {'col_1': 4, 'col_2': 5} 

cols_to_update = d.keys() # you might need cols_to_update = list(d.keys()) in python 3 
# multiply the selected columns and update 
df[cols_to_update] = df[cols_to_update].mul(pd.Series(d), axis=1)[cols_to_update] 
df 

    col_1 col_2 col_3 
#0  4  15  4 

Ich zufällig diese Arbeit auch, nicht sicher, ob es eine Höhle gibt über diese Verwendung:

df[d.keys()] *= pd.Series(d) 
+0

Sicher. Viel Glück damit. – Psidom

+0

Vielleicht habe ich hier einen kritischen Teil meiner Frage weggelassen: Ich habe mehr Spalten in meinem Dataframe als diejenigen, auf denen ich gerne multiplizieren würde. Ich habe meine Frage aktualisiert. –

Verwandte Themen