如何将pandas dataframe中的每行乘以不同的值

new9mtju  于 2023-03-28  发布在  其他
关注(0)|答案(2)|浏览(264)

我试图将pandas Dataframe 的每一行乘以不同的值,并想知道最好的方法是什么。
例如,如果我有以下dataframe:

  1. import numpy as np
  2. import pandas as pd
  3. df = pd.DataFrame(np.random.randn(2, 3))
  4. df
  5. 0 1 2
  6. 0 -1.283316 0.849488 1.936060
  7. 1 -2.078575 -0.871570 -0.970261

我想将每一行的每个元素乘以列表或数组中的不同:vals = [1, 100]
在这个例子中,我希望第一行的每一项都乘以1,第二行的每一项都乘以100
因此,结果应该是:

  1. 0 1 2
  2. 0 -1.283316 0.849488 1.936060
  3. 1 -207.8575 -87.1570 -97.0261

我试过:

  1. df * vals
  2. df.multiply(vals)
  3. df.multiply(vals, axis=1)

虽然我也没想到这些,但根据我对这些代码应该做什么的理解,这些都不起作用。

jchrr9hc

jchrr9hc1#

方法是mul

  1. df.mul([1, 100], axis=0)
  2. Out[17]:
  3. 0 1 2
  4. 0 -1.198766 -1.340028 1.990843
  5. 1 113.890468 -68.177755 -9.060228
fykwrbwg

fykwrbwg2#

最流行的方法是mulaxis=0上,也就是说,要使*工作,我们需要一个列数组,其中的行数与帧的行数匹配,所以下面的工作。

  1. vals = np.array([1, 100])
  2. df1 = df * vals[:, None]
  3. # or to modify the original frame
  4. df *= vals[:, None]

相关问题