pandas - python - 如何在pandas数据帧中将所有列相乘?

我有一个这样的数据框架:


A B C D E F


0 1 2 3 1 4


2 1 4 3 2 4


3 1 2 1 1 2



我尝试多行的第一和第二,第三和第四,第五和第六列,但是,无法找到解决方案。我试图得到这样的数据帧


A C E


0 6 4


2 12 8


3 2 2



时间:

在pandas中的一个常见技巧是使用floor division,按每个n值分组,在axis=1上执行这个操作以获得所需的输出。


n = 2



df.groupby(np.arange(df.shape[1]) // n, axis=1).prod()




 0 1 2


0 0 6 4


1 2 12 8


2 3 2 2



此解决方案针对n=2进行了优化,并且假设有偶数列。


df.iloc[:, ::2] * df.iloc[:, 1::2].values



 A C E


0 0 6 4


1 2 12 8


2 3 2 2



我会做的是shift with reindex


df.shift(-1,axis=1).mul(df).reindex(columns=df.columns[::2])


Out[12]: 


 A C E


0 0.0 6.0 4.0


1 2.0 12.0 8.0


2 3.0 2.0 2.0



尝试以下方法:


pd.concate([df.iloc[:,i]*df.iloc[:,i+1] for i in range(0,len(df.columns),2)],


 axis=1)



...