python - 根据两个不同的列对一列求和
问题描述
我试图通过控制下表中的年份和代码来总结 subsec 列。这样,要创建一个新列并在此处添加 df.subsec 的总和。
我通过调整代码尝试了这个数据科学链接,但它不起作用:
dfc['k']=dfc.groupby(['ticker', 'year'])['subsec'].sum().sum(level=['ticker', 'year'])
解决方案
您可以考虑以下示例:
import pandas as pd
import numpy as np
df = pd.DataFrame()
df['a'] = ['a', 'b', 'a', 'a', 'b', 'c']
df['yr'] = [2008, 2008, 2008, 2009, 2008, 2008]
df['sub'] = [10, 15, 17, 15, 10, 10]
print(df)
a yr sub
0 a 2008 10
1 b 2008 15
2 a 2008 17
3 a 2009 15
4 b 2008 10
5 c 2008 10
我们可以将 groupby 和 sum() 函数应用于上面的数据框,最后 to_frame() 函数会给它一个你想要的列名,然后你可以重置索引。
df.groupby(['a', 'yr'])['sub'].sum().to_frame('Total').reset_index()
a yr Total
0 a 2008 27
1 a 2009 15
2 b 2008 25
3 c 2008 10
推荐阅读
- heroku - 如何将 Heroku 链接到 Godaddy 域?
- javascript - 在 SuiteScript 2.0 中引用自定义 AMD 模块
- momentjs - 使用 moment.js 以秒为单位获取当前时间
- python - 使用 Python 3,为什么 int 方法不处理代表浮点数的字符串?这是设计使然吗?
- asp.net-core - Asp.net Core SQLite 数据库位置
- c# - Naudio + Unity:如何访问 DeviceCount
- python - ValueError:值的长度与索引的长度不匹配 - json_normalize
- java - 休息服务的 SoapUI 自定义属性
- mysql - 为什么 LIMIT 和 OFFSET 在 mysql 脚本中不起作用?
- android - 如何从 CardView 中移除外部视图?