Pandas在多列上进行操作

时间:2017-12-09 15:23:48

标签: python pandas aggregate multiple-columns

如果我们可以使用pandas.core.groupby.DataFrameGroupBy.agg函数对多列列进行算术运算,我感兴趣。例如:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.arange(15).reshape(5, 3))
df['C'] = [0, 0, 2, 2, 5]
print(df.groupby('C').mean()[0] - df.groupby('C').mean()[1])
print(df.groupby('C').agg({0: 'mean', 1: 'sum', 2: 'nunique', 'C': 'mean0-mean1'}))

我们是否有可能在这个例子中收到结果:第0列和第1列的平均值按“C”列分组? DF

    0   1   2  C
0   0   1   2  0
1   3   4   5  0
2   6   7   8  2
3   9  10  11  2
4  12  13  14  5

分组差异

C
0   -1.0
2   -1.0
5   -1.0
dtype: float64

我对不使用agg方法的解决方案不感兴趣。我很好奇,只有当agg方法可以将多个列作为参数,然后对它们执行一些操作以在作业完成后返回一列。

1 个答案:

答案 0 :(得分:0)

IIUC:

In [12]: df.groupby('C').mean().diff(axis=1)
Out[12]:
    0    1    2
C
0 NaN  1.0  1.0
2 NaN  1.0  1.0
5 NaN  1.0  1.0

In [13]: df.groupby('C').mean().diff(-1, axis=1)
Out[13]:
     0    1   2
C
0 -1.0 -1.0 NaN
2 -1.0 -1.0 NaN
5 -1.0 -1.0 NaN