首页 > 解决方案 > 如何将数据帧的所有数字列乘以一维数组?

问题描述

我有一个df形状为 rxc 的数据框,有 1 个文本列(具有非唯一值),其他列都是浮动的。然后我有一个大小为 r 的数组mult。我希望数据框的每个数字列都乘以数组的相应项。

即期望的输出是 value_1[0] 应该变成 value_1[0] * mult[0],value_2[0] 应该变成 value_2[0] * mult[0],等等。

有什么简单的方法可以做到这一点?

我已经尝试了下面的代码,但它不起作用。

import numpy as np
import pandas as pd

df = pd.DataFrame()

df['txt']=['a','b','c','a','d']
df['value_1'] = np.arange(0,5)
df['value_2'] = np.arange(10,15)

mult = np.array([1,1,0,0,1])

newdf = df * mult

newdf2 = df.set_index('txt') * np.array

标签: pythonpandasdataframenumpy

解决方案


mult在进行乘法之前,您只需要表示为列向量。所以以下应该工作:

df * mult[:,None]

研究mult.shapemult[:,None].shape查看差异。


推荐阅读