通过字典将Pandas DataFrame中的所有行相乘

时间:2017-05-02 00:19:55

标签: python pandas

说我有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

由于

1 个答案:

答案 0 :(得分:3)

如果字典转换为系列

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)