假设我有一个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)

10-07 15:16