python - Pandas :聚合具有多种功能的多列

标签 python r pandas dplyr

Python 中的 Pandas 和 R 中的 Dplyr 都是灵活的数据整理工具。例如,在 R 中,使用 dplyr 可以执行以下操作;

custom_func <- function(col1, col2) length(col1) + length(col2)

ChickWeight %>% 
  group_by(Diet) %>% 
  summarise(m_weight = mean(weight), 
            var_time = var(Time), 
            covar = cov(weight, Time),
            odd_stat = custom_func(weight, Time))

注意如何在一条语句中;

  • 我可以在一行中聚合多个列。
  • 我可以在一行中对这些多列应用不同的函数。
  • 我可以使用考虑两列的函数。
  • 我可以为其中任何一个添加自定义函数。
  • 我可以为这些聚合声明新的列名。

pandas 中也可以使用这种模式吗?请注意,我有兴趣在简短的声明中执行此操作(因此不要创建三个不同的数据框然后加入它们)。

最佳答案

与 Pandas groupby.apply()您可以在 groupby 聚合中运行多个函数。请注意,对于统计功能,您需要安装 scipy。对于自定义函数,需要为分组数据运行类似 sum() 的聚合:

def customfct(x,y):
    data = x / y
    return data.mean()

def f(row):  
    row['m_weight'] = row['weight'].mean()
    row['var_time'] = row['Time'].var()
    row['cov'] = row['weight'].cov(row['Time'])
    row['odd_stat'] = customfct(row['weight'], row['Time'])
    return row

aggdf = df.groupby('Diet').apply(f)

关于python - Pandas :聚合具有多种功能的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35938393/

相关文章:

python - Pandas 多索引将 float 更改为字符串

python - 将 3D Numpy 数组写入 CSV 文件

python - HDF5 文件名称中的 '/' 混淆

python - lstm预测结果延迟现象

r - Dplyr:仅当行值 > 0 时才使用汇总跨来取列的平均值

python - Python 中使用 Pandas.series.str.contains 进行字符串替换时出现模式匹配错误

python jinja2 : using variable in template with conditional

r - 如何用箭头和最大值注释线图?

r - knit 命令不起作用而 knit HTML 按钮起作用

python - 将两列相乘时出现错误消息