pandas - 计算不同列中每个组的功能

时间:2015-11-27 16:38:09

标签: python pandas

我有一个大型DataFrame的标准分组:

agroup = data.groupby("Product No")

然后,我想对每个组应用一个函数。此函数为每个组计算两个值

def compute_thing(df):
   v1, v2 = calc(df)
   return v1, v2

我需要的是一个包含两列的DataFrame,每列都来自元组。

我尝试过:

agroup.apply(compute_thing)

但是这会创建一个列,并将值放在元组中。我尝试从compute_thing返回系列或词组,但它从未起作用..

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

compute_thing应该返回一个DataFrame,而不是一个元组。例如:

import pandas as pd

df = pd.DataFrame({
        'foo': [1, 1, 2, 2, 3, 3],
        'bar': [1, 2, 3, 4, 5, 6]
    })

def compute_thing(group):
    return pd.DataFrame({
            'foo_mu': group['foo'].mean(),
            'bar_mu': group['bar'].mean()
        }, index=[0])

df.groupby('foo').apply(compute_thing)

导致

       bar_mu  foo_mu
foo                  
1   0     1.5       1
2   0     3.5       2
3   0     5.5       3