2017-05-02 83 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中有更多的列比我想要增加的更多。我已经更新了我的问题。 –