python 一维对象数组,分组求和
时间: 2024-09-14 19:02:38 浏览: 33
python+numpy按行求一个二维数组的最大值方法
在Python中,如果你有一维的对象数组(比如列表),并且你想按某个属性对这些对象进行分组并求和,通常你需要先将它们转换成可以处理分组的数据结构,比如字典或者pandas DataFrame。如果你用的是内置数据结构,你可以采用一些Pythonic的方式,但如果数据量大,推荐使用pandas库。
举个例子,假设你有一个包含字典的列表,每个字典代表一个人,有姓名和年龄两个键,你可以这样做:
```python
# 示例数据
people = [
{"name": "Alice", "age": 20},
{"name": "Bob", "age": 25},
{"name": "Charlie", "age": 20},
{"name": "David", "age": 30},
]
# 使用lambda函数和dict comprehension进行分组求和
age_groups = {k: sum(v["age"] for v in group) for k, group in groupby(people, lambda x: x["age"])}
print(age_groups) # 输出: {20: 40, 25: 25, 30: 30}
```
这里我们使用了`itertools.groupby`函数来分组,然后通过列表推导式计算每个年龄段的总和。
如果你需要更复杂的统计分析,还是建议使用pandas DataFrame,它提供了强大的分组和聚合功能:
```python
import pandas as pd
# 将列表转换为DataFrame
df_people = pd.DataFrame(people)
# 分组求和
age_sum = df_people.groupby("age")["age"].sum()
print(age_sum)
```
阅读全文