假设我有一个DataFrame
像这样称为one
:
non_multiply_col col_1 col_2
A Name 1 3
像这样的
dict
称为two
:{'col_1': 4, 'col_2': 5}
有一种方法可以将
one
的所有行乘以two
的键定义的列的two
中的值,因此结果将是:non_multiply_col col_1 col_2
A Name 4 15
我尝试使用
multiply
,但是我并不是真的希望加入任何特定的东西。也许我不了解如何正确使用multiply
。谢谢
最佳答案
如果将字典转换为系列,则mul/multiply可以正常工作:
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)