给定一个数值数据框,我想执行加号、减号、乘法和amp;对所有列的组合进行除法
对于3和3以上的组合,最快的方法是什么
下面给出了2个组合的最小可再现示例
import numpy as np
import pandas as pd
from itertools import combinations
from itertools import permutations
from sklearn.datasets import load_boston
# the dataset
X, y = load_boston(return_X_y=True)
X = pd.DataFrame(X)
combos2 = list(combinations(X.columns,2))
perm3 = list(permutations(X.columns,3)) # how would i do this with out typing out all the permutations
for i in combos2:
X[f'{i[0]}_X_{i[1]}'] = X.iloc[:,i[0]]*X.iloc[:,i[1]] # Multiply
X[f'{i[0]}_+_{i[1]}'] = X.iloc[:,i[0]]+X.iloc[:,i[1]] # Add
X[f'{i[0]}_-_{i[1]}'] = X.iloc[:,i[0]]-X.iloc[:,i[1]] # Subtract
X[f'{i[0]}_/_{i[1]}'] = X.iloc[:,i[0]]/(X.iloc[:,i[1]]+1e-20) # Divide
我正在考虑一种方法,将“operators+*-/添加到组合中,这样就可以用比手动键入所有组合更少的行来编写,但我不知道从哪里开始
我想要所有订单:即(a*b+c),(a*b-c),(a*b/c)等
理想情况下不留下重复的列,即(a+b+c)和(c+b+a)
例如,如果我有3列a b c,我想要一个新列(a*b+c)
这里有一个简单的解决方案,输出2&;所有列中的3列
我希望这将帮助您开始:
输出:
相关问题 更多 >
编程相关推荐