python两列数据分别相乘_python – 将两个不同数据帧中每行的值相乘

我正在构建遗传算法以在python中进行特征选择.我从我的数据中提取了特征,然后我分成了两个数据帧,“训练”和“测试”数据帧.

如何将“填充”数据框(每个单独)和“训练”数据框中的每一行的值复用?

‘火车’数据帧:

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,pandas,dataframe,genetic-algorithm

来源: https://codeday.me/bug/20190727/1550799.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值