python - 使用 pandas groupby 基于多列求和
问题描述
我想创建一个新列,该列根据多列的分组汇总值列。在这个例子中,我想得到每个ISIN、日期和投资组合的总和。
df = pd.DataFrame({"ISIN": ["IS123", "IS123", "UN123", "UN123", "FA123"],
"date": ["16", "16", "18", "18", "22"],
"portfolio": ["A", "A", "B", "A", "D"],
"value": [400, 300, 200, 600, 500]})
这是所需的输出。如您所见,只有前两行“满足”条件,并且两行的总和为700。其他人将保持各自的价值。
df = pd.DataFrame({"ISIN": ["IS123", "IS123", "UN123", "UN123", "FA123"],
"date": ["16", "16", "18", "18", "22"],
"portfolio": ["A", "A", "B", "A", "D"],
"value": [400, 300, 200, 600, 500],
"Sum per ISIN, date and portfolio": [700, 700, 200, 600, 500]})
这是我尝试过的方法,但我只能让它在一个列上进行分组,例如ISIN。
df["Sum per ISIN, date and portfolio"] = df["value"].groupby(df["ISIN", "date", "portfolio"]).transform("sum")
解决方案
尝试groupby
使用 DataFrame 而不是 Series ( value
),然后从 grouper 中选择列:
df["Sum per ISIN, date and portfolio"] = (
df.groupby(["ISIN", "date", "portfolio"])["value"].transform("sum")
)
ISIN date portfolio value Sum per ISIN, date and portfolio
0 IS123 16 A 400 700
1 IS123 16 A 300 700
2 UN123 18 B 200 200
3 UN123 18 A 600 600
4 FA123 22 D 500 500
推荐阅读
- model-view-controller - .NET Core 3.1 - MVC - List<> 值未从角度模型映射
- ios - 具有估计高度的 CollectionView 组合布局仅显示 _UICollectionViewOrthogonalScrollerEmbeddedScrollView
- python - 正则表达式从 mroute 数据库的多行输出创建嵌套字典
- javascript - 根据自定义切换开关的切换启用和禁用复选框
- postgresql - 列出 Postgres 上所有具有数组数据类型的表
- python - 在python中打印布尔值
- microsoft-graph-api - 用于访问团队和团队的组以提取文档的 Graph API
- c# - 带有 XML 标记的 POST 属性被替换为在控制器中?
- python - 如何在 OpenCV 中使用 OpenPose 获取各个身体部位的大小?
- javascript - 更改位置和名称时,脚本不起作用