将整个列与列表中的值相乘

时间:2019-07-07 10:10:22

标签: python pandas dataframe

我有一个非常大的数据框,想将每列中的每个元素与列表中的值相乘。

       Name  c1  c2  c3  c4
    0   a1   1   2   2   3
    1   a2   2   1   1   2
    2   a3   3   1   2   1
    3   a4   2   3   3   4

l = [2, 3, 1, 4]

我想做的是将整个列c1乘以2,c2乘以3,c3乘以1,c4乘以3,依此类推。

我知道我可以用     df.iloc[:,0] = df.iloc[:,0]*2 但是我不确定如何在所有列上有效地做到这一点。

3 个答案:

答案 0 :(得分:3)

您可以通过以下方式使用<Image style={{ borderRadius: 16, right:4, bottom: 10, alignSelf: 'center', width: (400 / 2)+20, height: (400 / 2)+10 }} source={{ uri: 'https://ccg24.com/w/kasian/GetListSlider/745869/Merchent/Fa/image/512M512' }} /> 和列名:

.loc

以下是输出:

import pandas as pd
import numpy as np

np.random.seed(12)

df = pd.DataFrame(
    {
        "df0" : np.random.choice(["a", "b"], 100),
        "df1" : np.random.randint(0, 15, 100), 
        "df2" : np.random.randint(0, 15, 100),
        "df3" : np.random.randint(0, 15, 100),
        "df4" : np.random.randint(0, 15, 100),
    }
)
print(df.head())

l = [2, 3, 1, 4]
df.loc[:, ["df1", "df2", "df3", "df4"]] *= np.array(l)

df.head()

答案 1 :(得分:0)

我认为您做对了,您需要定义所有需要相乘的列

df.iloc[:,1:] = df.iloc[:,1:]*l

答案 2 :(得分:0)

使用DataFrame.iloc并将所有列都排在最前面:

Date        factor1    factor 2  factor n...
yyyymmdd      0.0212   0.0472    -0.0408
etc