如果我有一个包含变量 A、B、C、D、E 的数据框,我如何创建一个 for 或 while 循环来创建变量,方法是使用所有变量和所有可能的数学运算符对现有变量进行所有可能的组合 ( +,-,/,*)?
从具有以下变量的数据框开始:
A B C D E
像这样:
A B C D E A+B A+C A+D A+E A*B ...
最佳答案
解决方案
你想使用numpy
import numpy as np
vars = [1, 2, 3]
np.concatenate([
np.add.outer(vars, vars),
np.subtract.outer(vars, vars),
np.multiply.outer(vars, vars),
np.divide.outer(vars, vars)]).flatten()
看起来像:
array([ 2, 3, 4, 3, 4, 5, 4, 5, 6, 0, -1, -2, 1, 0, -1, 2, 1,
0, 1, 2, 3, 2, 4, 6, 3, 6, 9, 1, 0, 0, 2, 1, 0, 3,
1, 1])
说明
# All possible additions
print np.add.outer(vars, vars)
# All possible subtractions
print np.subtract.outer(vars, vars)
# All possible multiplications
print np.multiply.outer(vars, vars)
# All possible divisions
print np.divide.outer(vars, vars)
看起来像这样:
[[2 3 4]
[3 4 5]
[4 5 6]]
[[ 0 -1 -2]
[ 1 0 -1]
[ 2 1 0]]
[[1 2 3]
[2 4 6]
[3 6 9]]
[[1 0 0]
[2 1 0]
[3 1 1]]
关于Python 在所有可能的变量组合中创建新的列/属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37194813/