本文共 797 字,大约阅读时间需要 2 分钟。
在Python的Pandas库中,GROUP BY和SUM操作可能会导致原始列的信息丢失。以下是解决方案:
使用agg()函数进行多个聚合操作
通过将多个聚合操作结合在一起,可以同时保留原始列和聚合结果。例如:import pandas as pddf = 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/