如何乘以一列中的列列表

How to multiply a list of columns in a column

我想将一个列的列表乘以一个列 所以我有列的列表= cols 我想将它们与列“multi”

相乘
data={"col1":[2,3,4,5],
"col2":[4,2,4,6],
"col3":[7,6,9,11],
"col4":[14,11,22,8],
"multi":[1.4,2.5,1.6,2.2]}
df=pd.DataFrame.from_dict(data)
cols=list(df.columns)
cols.remove("multi")
df

所以我尝试这样做:

df[cols]=df[cols]*df["multi"]

但是我明白了

ValueError: Columns must be same length as key

试试这个:

df.iloc[:, your_cols] *= df['multi']

其中:

your_cols = [df.columns.get_loc(c) for c in cols]
In [46]: data={"col1":[2,3,4,5],
    ...: "col2":[4,2,4,6],
    ...: "col3":[7,6,9,11],
    ...: "col4":[14,11,22,8],
    ...: "multi":[1.4,2.5,1.6,2.2]}
    ...: df=pd.DataFrame.from_dict(data)
    ...: cols=list(df.columns)
    ...: cols.remove("multi")
    ...: df
Out[46]:
   col1  col2  col3  col4  multi
0     2     4     7    14    1.4
1     3     2     6    11    2.5
2     4     4     9    22    1.6
3     5     6    11     8    2.2

In [47]: df[['col1','col2','col3','col4']].multiply(df["multi"], axis="index")
Out[47]:
   col1  col2  col3  col4
0   2.8   5.6   9.8  19.6
1   7.5   5.0  15.0  27.5
2   6.4   6.4  14.4  35.2
3  11.0  13.2  24.2  17.6
df[cols] = (df[cols].T*df["multi"]).T

你也可以试试这个

df.apply(lambda x :x[cols]*x["multi"], axis=1)