如果我们可以使用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方法可以将多个列作为参数,然后对它们执行一些操作以在作业完成后返回一列。
答案 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