我有一个非常大的数据框,想将每列中的每个元素与列表中的值相乘。
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
但是我不确定如何在所有列上有效地做到这一点。
答案 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