python - Groupby Pandas 数据框基于来自另一个 df 的值
问题描述
我有一个数据框,我在其中保留所有相关属性,另一个具有我想对第一个 df 分组的属性。
我知道如果您将系列(一列)作为参数,您可以按数据框分组,如果您放入数据框,则会出现错误。
ValueError: Grouper for '<class 'pandas.core.frame.DataFrame'>' not 1-dimensional
我知道我可以将列连接到原始数据框,但我不希望这样做,除非没有其他解决方案。
df.groupby([sorted_team_names]).ngroup()
这是我的代码。sorted_team_names 是一个包含两列的 df,此外它具有与 df 相同的索引。
这是一个相当普遍的问题,我不确定您是否需要数据样本。
解决方案
一种方法是分别按列分组:
df1 = pd.DataFrame({'a':[1,2,2,1], 'b':[1,2,2,1]})
print (df1)
a b
0 1 1
1 2 2
2 2 2
3 1 1
df2 = pd.DataFrame({'c':[1,2,3,7]})
print (df2)
c
0 1
1 2
2 3
3 7
df3 = df2.groupby([df1['a'], df1['b']]).sum()
print (df3)
c
a b
1 1 8
2 2 5
...但索引必须在两个 DataFrame 之间匹配:
df1 = pd.DataFrame({'a':[1,2,2,1], 'b':[1,2,2,1]}, index=[2,5,6,8])
print (df1)
a b
2 1 1 <- matched only 2 index
5 2 2
6 2 2
8 1 1
df2 = pd.DataFrame({'c':[1,2,3,7]})
print (df2)
c
0 1
1 2
2 3
3 7
df3 = df2.groupby([df1['a'], df1['b']]).sum()
print (df3)
c
a b
1.0 1.0 3
推荐阅读
- java - 使用 Hibernate Panache 计数和分组
- c# - MS Teams:自适应卡片
- c# - 运行迁移时在 .Net 核心 Web API 中获取 FileNotFound 异常
- kubernetes - Gitlab协调员在跑步者完成工作后等待5分钟 - 如何诊断
- c# - ASP.NET MVC 如何使用 ApplicationUser 和其他域类之间的多对多关系
- python - 转换为 int 的正确方法
- javascript - 单选按钮的 OnCheckedChanged 事件未在网格内触发,即使在设置自动回发后也是如此
- python - 有什么方法可以通过单击开始按钮来恢复运行?
- c++ - 您可以在不强制转换的情况下将位运算符与枚举类一起使用吗?
- json - 我正在尝试编写一个 bash 脚本来更新 package.json 依赖版本