gpt4 book ai didi

python - 将两个不同数据框中每一行的值相乘

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:27 25 4
gpt4 key购买 nike

我正在构建遗传算法以在 Python 中进行特征选择。我从数据中提取了特征,然后分成两个数据框,“训练”和“测试”数据框。如何将“人口”数据框(每个 individu)和“火车”数据框中每一行的值相乘?

“训练”数据框:

   feature0   feature1   feature2   feature3   feature4   feature5
0 18.279579 -3.921346 13.611829 -7.250185 -11.773605 -18.265003
1 17.899545 -15.503942 -0.741729 -0.053619 -6.734652 4.398419
4 16.432750 -22.490190 -4.611659 -15.247781 -13.941488 -2.433374
5 15.905368 -4.812785 18.291712 3.742221 3.631887 -1.074326
6 16.991823 -15.946251 8.299577 8.057511 8.057510 -1.482333

“人口”数据框:

      0     1     2     3     4     5     
0 1 1 0 0 0 1
1 0 1 0 1 0 0
2 0 0 0 0 0 1
3 0 0 1 0 1 1

将“population”中的每一行乘以“train”中的所有行。它将产生:

1) 从人口第 1 行:

   feature0   feature1   feature2   feature3   feature4   feature5
0 18.279579 -3.921346 0 0 0 -18.265003
1 17.899545 -15.503942 0 0 0 4.398419
4 16.432750 -22.490190 0 0 0 -2.433374
5 15.905368 -4.812785 0 0 0 -1.074326
6 16.991823 -15.946251 0 0 0 -1.482333

2) 从人口第 2 行:

   feature0   feature1   feature2   feature3   feature4   feature5
0 0 -3.921346 0 -7.250185 0 0
1 0 -15.503942 0 -0.053619 0 0
4 0 -22.490190 0 -15.247781 0 0
5 0 -4.812785 0 3.742221 0 0
6 0 -15.946251 0 8.057511 0 0

等等……

最佳答案

如果需要循环(如果数据大会慢):

for i, x in population.iterrows():
print (train * x.values)

feature0 feature1 feature2 feature3 feature4 feature5
0 18.279579 -3.921346 0.0 -0.0 -0.0 -18.265003
1 17.899545 -15.503942 -0.0 -0.0 -0.0 4.398419
4 16.432750 -22.490190 -0.0 -0.0 -0.0 -2.433374
5 15.905368 -4.812785 0.0 0.0 0.0 -1.074326
6 16.991823 -15.946251 0.0 0.0 0.0 -1.482333
feature0 feature1 feature2 feature3 feature4 feature5
0 0.0 -3.921346 0.0 -7.250185 -0.0 -0.0
1 0.0 -15.503942 -0.0 -0.053619 -0.0 0.0
4 0.0 -22.490190 -0.0 -15.247781 -0.0 -0.0
5 0.0 -4.812785 0.0 3.742221 0.0 -0.0
6 0.0 -15.946251 0.0 8.057511 0.0 -0.0
feature0 feature1 feature2 feature3 feature4 feature5
0 0.0 -0.0 0.0 -0.0 -0.0 -18.265003
1 0.0 -0.0 -0.0 -0.0 -0.0 4.398419
4 0.0 -0.0 -0.0 -0.0 -0.0 -2.433374
5 0.0 -0.0 0.0 0.0 0.0 -1.074326
6 0.0 -0.0 0.0 0.0 0.0 -1.482333
feature0 feature1 feature2 feature3 feature4 feature5
0 0.0 -0.0 13.611829 -0.0 -11.773605 -18.265003
1 0.0 -0.0 -0.741729 -0.0 -6.734652 4.398419
4 0.0 -0.0 -4.611659 -0.0 -13.941488 -2.433374
5 0.0 -0.0 18.291712 0.0 3.631887 -1.074326
6 0.0 -0.0 8.299577 0.0 8.057510 -1.482333

或者每一行分开:

print (train * population.values[0])

feature0 feature1 feature2 feature3 feature4 feature5
0 18.279579 -3.921346 0.0 -0.0 -0.0 -18.265003
1 17.899545 -15.503942 -0.0 -0.0 -0.0 4.398419
4 16.432750 -22.490190 -0.0 -0.0 -0.0 -2.433374
5 15.905368 -4.812785 0.0 0.0 0.0 -1.074326
6 16.991823 -15.946251 0.0 0.0 0.0 -1.482333

或者对于 MultiIndex DataFrame:

d = pd.concat([train * population.values[i] for i in range(population.shape[0])],
keys=population.index.tolist())
print (d)

feature0 feature1 feature2 feature3 feature4 feature5
0 0 18.279579 -3.921346 0.000000 -0.000000 -0.000000 -18.265003
1 17.899545 -15.503942 -0.000000 -0.000000 -0.000000 4.398419
4 16.432750 -22.490190 -0.000000 -0.000000 -0.000000 -2.433374
5 15.905368 -4.812785 0.000000 0.000000 0.000000 -1.074326
6 16.991823 -15.946251 0.000000 0.000000 0.000000 -1.482333
1 0 0.000000 -3.921346 0.000000 -7.250185 -0.000000 -0.000000
1 0.000000 -15.503942 -0.000000 -0.053619 -0.000000 0.000000
4 0.000000 -22.490190 -0.000000 -15.247781 -0.000000 -0.000000
5 0.000000 -4.812785 0.000000 3.742221 0.000000 -0.000000
6 0.000000 -15.946251 0.000000 8.057511 0.000000 -0.000000
2 0 0.000000 -0.000000 0.000000 -0.000000 -0.000000 -18.265003
1 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 4.398419
4 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -2.433374
5 0.000000 -0.000000 0.000000 0.000000 0.000000 -1.074326
6 0.000000 -0.000000 0.000000 0.000000 0.000000 -1.482333
3 0 0.000000 -0.000000 13.611829 -0.000000 -11.773605 -18.265003
1 0.000000 -0.000000 -0.741729 -0.000000 -6.734652 4.398419
4 0.000000 -0.000000 -4.611659 -0.000000 -13.941488 -2.433374
5 0.000000 -0.000000 18.291712 0.000000 3.631887 -1.074326
6 0.000000 -0.000000 8.299577 0.000000 8.057510 -1.482333

并选择 xs :

print (d.xs(0))

feature0 feature1 feature2 feature3 feature4 feature5
0 18.279579 -3.921346 0.0 -0.0 -0.0 -18.265003
1 17.899545 -15.503942 -0.0 -0.0 -0.0 4.398419
4 16.432750 -22.490190 -0.0 -0.0 -0.0 -2.433374
5 15.905368 -4.812785 0.0 0.0 0.0 -1.074326
6 16.991823 -15.946251 0.0 0.0 0.0 -1.482333

关于python - 将两个不同数据框中每一行的值相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47301581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com