如何在熊猫数据框中将所有列彼此相乘?

时间:2019-05-14 17:13:44

标签: python pandas

我有一个看起来像这样的数据框:

<store>
    @type elasticsearch
    host x.x.x.x
    index_name test.%Y%m
    <buffer tag, time>
        timekey 1h
    </buffer>
    flush_interval 5s
</store>

我尝试将第一,第二,第三,第四,第五和第六列增加多个,但找不到解决方案。我尝试获取这样的数据框:

A     B    C     D    E    F
0     1    2     3    1    4
2     1    4     3    2    4
3     1    2     1    1    2

4 个答案:

答案 0 :(得分:5)

pandas中的一个常见技巧是使用下限划分按每个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

答案 1 :(得分:5)

跨度为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

答案 2 :(得分:4)

shift我将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

答案 3 :(得分:2)

尝试:

pd.concate([df.iloc[:,i]*df.iloc[:,i+1] for i in range(0,len(df.columns),2)],
           axis=1)
相关问题