python - 按两列分组并得到总和?
问题描述
x1 = [{'id1': 'Africa', 'id2': 'Europe', 'v': 1},
{'id1': 'Europe', 'id2': 'North America', 'v': 5},
{'id1': 'North America', 'id2': 'Asia', 'v': 2,},
{'id1': 'North America', 'id2': 'Asia', 'v': 3}]
df = pd.DataFrame(x1)
我将如何按大洲分组并根据“v”列获得总和?
例如,我希望得到每个大陆的值总和,如下所示:
Africa: 1 (1)
Europe: 6 (1 + 5)
North America: 10 (5 + 2 + 3)
Europe: 6 (1 + 5)
解决方案
使用melt
和聚合sum
:
s = df.melt('v').groupby('value')['v'].sum()
print (s)
value
Africa 1
Asia 5
Europe 6
North America 10
Name: v, dtype: int64
对于DataFrame
:
df = df.melt('v', value_name='a').groupby('a', as_index=False)['v'].sum()
print (df)
a v
0 Africa 1
1 Asia 5
2 Europe 6
3 North America 10
推荐阅读
- react-native - 如何使用试剂从其他文件中正确导入组件?
- javascript - Kibana 不显示从 Node.js Winston Logger 发送到 Elasticsearch 的日志
- php - 如果我使用 AWS RDS 将用户输入存储到数据库中,我的 PHP 文件应该放在哪里?
- java - 如何跟踪 Java 异常
- python - 在 Tkinter 中,有没有办法在运行程序时停止执行回调函数?
- c++ - 我如何计算向量[5][1] N 次
- json - Ionic - 带有 laravel json 响应的 API
- javascript - 如何使用 JS 控制 CSS 过渡和动画?
- c++ - 如何将按位运算符与 unsigned char 数据类型一起使用?
- python - 替换 np.array 中元素的更快方法