gpt4 book ai didi

python - 如何使用聚合函数在 Pandas 的列中按相同值排列 "merge"行?

转载 作者:太空狗 更新时间:2023-10-29 17:59:08 25 4
gpt4 key购买 nike

给定一列,我想对数据框中的行进行分组。然后我想收到一个编辑过的数据框,我可以决定哪个聚合函数有意义。默认值应该只是组中第一个条目的值。

(如果该解决方案也适用于两列的组合,那就太好了)

例子

#!/usr/bin/env python

"""Test data frame grouping."""

# 3rd party modules
import pandas as pd


df = pd.DataFrame([{'id': 1, 'price': 123, 'name': 'anna', 'amount': 1},
{'id': 1, 'price': 7, 'name': 'anna', 'amount': 2},
{'id': 2, 'price': 42, 'name': 'bob', 'amount': 30},
{'id': 3, 'price': 1, 'name': 'charlie', 'amount': 10},
{'id': 3, 'price': 2, 'name': 'david', 'amount': 100}])
print(df)

给出数据框:

   amount  id     name  price
0 1 1 anna 123
1 2 1 anna 7
2 30 2 bob 42
3 10 3 charlie 1
4 100 3 david 2

我想得到:

amount  id     name  price
3 1 anna 130
30 2 bob 42
110 3 charlie 3

所以:

  • id 列中具有相同值的条目属于一起。在该操作之后,应该仍然有一个 id 列,但它应该只有唯一值。
  • amountprice 中具有相同id 的所有值都被汇总
  • 对于 name,只取第一个(按数据帧的当前顺序)。

Pandas 可以吗?

最佳答案

你在找

aggregation_functions = {'price': 'sum', 'amount': 'sum', 'name': 'first'}
df_new = df.groupby(df['id']).aggregate(aggregation_functions)

给出

    price     name  amount
id
1 130 anna 3
2 42 bob 30
3 3 charlie 110

关于python - 如何使用聚合函数在 Pandas 的列中按相同值排列 "merge"行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46826773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com