2017-05-02 120 views
2

說我有一個DataFrame調用它one這樣的:乘的熊貓數據幀中的所有行通過字典

non_multiply_col col_1 col_2 
A Name   1  3 

dict這樣稱呼它two

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

是有辦法我可以將one的所有行乘以twotwo的密鑰所定義的值的值,因此結果如下:

non_multiply_col col_1 col_2 
A Name   4  15 

我試着用multiply,但我真的不希望加入特定的東西。也許我不瞭解如何正確使用multiply

感謝

回答

3

MUL /乘工作正常,如果字典轉換爲系列

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

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

# col_1 col_2 
#0  4  15 

如果你有比字典中的數據幀列:

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 

我碰巧也找到了這個工作,不知道是否有洞穴在大約這個用法:

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

當然。祝你好運。 – Psidom

+0

所以也許我在這裏忽略了我的問題的一個關鍵部分:我的DataFrame中有更多的列比我想要增加的更多。我已經更新了我的問題。 –