python pandas groupby复杂计算

时间:2017-12-19 11:39:47

标签: python pandas

我的数据框df包含以下列:abcd。我希望按a对数据进行分组并进行一些计算。我将在R中提供这个计算的代码。我的主要问题是如何在熊猫中做同样的事情?

library(dplyr)
df %>%
    group_by(a) %>%
    summarise(mean_b = mean(b),
              qt95 = quantile(b, .95),
              diff_b_c = max(b-c),
              std_b_d = sd(b)-sd(d)) %>% 
    ungroup()

这个例子是合成的,我只想了解pandas syntaxis

1 个答案:

答案 0 :(得分:4)

我相信您需要使用GroupBy.apply自定义功能:

def f(x):
    mean_b = x.b.mean()
    qt95 = x.b.quantile(.95)
    diff_b_c = (x.b - x.c).max()
    std_b_d = x.b.std() - x.d.std()
    cols = ['mean_b','qt95','diff_b_c','std_b_d']
    return pd.Series([mean_b, qt95, diff_b_c, std_b_d], index=cols)

df1 = df.groupby('a').apply(f)