熊猫适用于分组框和完整数据框

时间:2020-01-08 17:47:48

标签: python pandas-groupby apply pandas-apply

给出一个熊猫数据框,我通过应用自定义函数的groupby表达式评估几个变量。工作正常(暂时忽略第二个0-index-column),但我也想将该函数应用于整个DataFrame。

xxx = pd.DataFrame([['A',1],['A',2],['B',3]],columns=(['cls','val']))
xxx

    cls val
0   A   1
1   A   2
2   B   3

def myagg(dat):
    vmax=dat.val.max()
    vmean=dat.val.mean()
    return pd.DataFrame([[vmax,vmean]],columns=(['MaxV','MeanV']))

xxx.groupby('cls').apply(myagg)

收益

        MaxV    MeanV
cls         
A   0   2   1.5
B   0   3   3.0

但是xxx.apply(myagg)抛出:

AttributeError :(““系列”对象没有属性“ val””,发生 在索引cls')

我可以创建一个常量虚拟变量,并对其进行分组以接收所需的结果-但是肯定会有更简单的方法来实现。如果type(xxx)返回pandas.core.frame.DataFrame,为什么熊猫会将没有groupby的帧视为一个序列?我在熊猫0.23.4上; python 3.6。

xxx['dummy']='test'
xxx.groupby('dummy').apply(myagg)


         MaxV   MeanV
dummy           
test    0   3   2.0

1 个答案:

答案 0 :(得分:0)

使用伪函数似乎可以解决问题。

areStatesEqual()

,结果与问题相同。无需修改数据框。