博客
关于我
Pandas中的GROUP BY AND SUM不丢失列
阅读量:795 次
发布时间:2023-02-26

本文共 797 字,大约阅读时间需要 2 分钟。

在Python的Pandas库中,GROUP BY和SUM操作可能会导致原始列的信息丢失。以下是解决方案:

  • 使用agg()函数进行多个聚合操作

    通过将多个聚合操作结合在一起,可以同时保留原始列和聚合结果。例如:

    import pandas as pd
    df = pd.DataFrame({
    'A': ['foo', 'bar', 'foo', 'bar', 'foo', 'bar', 'foo', 'foo'],
    'B': ['one', 'one', 'two', 'three', 'two', 'two', 'one', 'three'],
    'C': np.random.randn(8),
    'D': np.random.randn(8)
    })
    result = df.groupby('A').agg({
    'C': 'sum', # 对列C求和
    'D': 'sum' # 对列D求和
    })
    print(result)

    输出将包含原始列A以及对C和D求和的结果。

  • 使用apply()函数执行复杂操作

    如果需要对每一组数据执行自定义函数,可以使用apply():

    result = df.groupby('A').apply(lambda x: x['C'].mean())

    这将在每一组中计算列C的平均值,并返回结果。

  • 使用reset_index()重置索引

    groupby操作后,索引可能会改变原始列的位置。使用reset_index()可以将索引转换回列,保留原始数据结构:

    result = df.groupby('A').sum().reset_index()

    这将将结果重置为包含原始列A的数据框。

  • 通过以上方法,可以有效地在Pandas中使用GROUP BY和SUM等函数,同时保留原始的数据列信息,避免丢失重要数据。

    转载地址:http://apvfk.baihongyu.com/

    你可能感兴趣的文章
    Pandas 数据透视表:列顺序和小计
    查看>>
    pandas 时序统计的高级用法!
    查看>>
    pandas 时间序列重新采样结束给定的一天
    查看>>
    pandas 根据不是常量的第三列的值将值从一列复制到另一列
    查看>>
    pandas 根据值从多列中的一列查找
    查看>>
    Pandas 根据布尔条件选择行和列
    查看>>
    pandas 滚动窗口 - datetime64[ns] 未实现
    查看>>
    pandas 版本兼容特定的蟒蛇和NumPy配置吗?
    查看>>
    pandas 生成excel多级表头
    查看>>
    Pandas 的 DataFrame 详解-ChatGPT4o作答
    查看>>
    pandas 读取excel数据,以字典形式输出
    查看>>
    Pandas 读取具有浮点值的 csv 文件会导致奇怪的舍入和小数位数
    查看>>
    pandas 适用,但仅适用于满足条件的行
    查看>>
    pandas 重新采样到每月的特定工作日
    查看>>
    pandas :如何删除以NaN为列名的多个列?
    查看>>
    pandas :我如何对堆叠的条形图进行分组?
    查看>>
    pandas :按移位分组和累加和(GroupBy Shift And Cumulative Sum)
    查看>>
    pandas :检测一个DF和另一个DF之间缺失的列
    查看>>
    Pandas-从具有嵌套列表列表的现有列创建动态列时出错
    查看>>
    Pandas-通过对列和索引的值求和来合并两个数据框
    查看>>