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

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

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

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

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

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

我试过:

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

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

jchrr9hc

jchrr9hc1#

方法是mul

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

fykwrbwg2#

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

vals = np.array([1, 100])
df1 = df * vals[:, None]

# or to modify the original frame
df *= vals[:, None]

相关问题