python - 将不同的聚合应用于 pandas GroupBy 组

标签 python pandas

我有一个类似的数据框

     A     B    C   D
one  2  10.0    0  11
two  5   NaN  NaN   8

并与

进行了分组
df.groupby(np.array(['min', 'max', 'min', 'max']), axis=1)

现在我想聚合具有不同功能的组。 “最小”组应与 .sum(axis=1) 聚合,而“最大”组应与 .sum(axis=1, skipna=False) 聚合>。 所需的输出将是

     min  max
one    2   21
two    5  NaN

有没有内置的方法可以做到这一点?

最佳答案

我相信您需要自定义函数,因为它不是内置:

def f(x):
    if x.name == 'min':
        return x.sum(axis=1)
    elif x.name == 'max':
        return x.sum(axis=1, skipna=False)

df = df.groupby(['min', 'max', 'min', 'max'], axis=1).apply(f)
print (df)
      max  min
one  21.0  2.0
two   NaN  5.0

关于python - 将不同的聚合应用于 pandas GroupBy 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64752128/

相关文章:

python - 在 matplotlib 中的刻度线之间居中 x-tick 标签

python - `ValueError: operands could not be broadcast together` 尝试使用 Seaborn 从 DataFrame 列绘制单变量分布时

python - Pandas:使用 UCS-2 LE 编码读取 csv 文件

python - virtualenv v16.7.2 powershell 激活脚本 : "You must ' source' this script: PS> . .\ENV\Scripts\activate”错误

python - 从大型文本文件中过滤停用词(使用包 : nltk. 语料库)

python - Django导入导出如何将当前管理员用户添加到模型中

python - Pandas 列的条件值

python - 比较两个数据帧和设置值

python - Pygame 文本变量不显示类型错误 : text must be a unicode or bytes

python - 在 python/bash 中打印带有条件的特定范围的行