python - DataFrameGroupBy 使用多索引选择子集
问题描述
2个完全相同的结构化数据帧。我将它们按列 A 和 B 分组。
dfgrouby1=df1.groupby(['A','B'])
dfgrouby2=df2.groupby(['A','B'])
dfgrouby1
我按子组(每个数据帧)进行迭代,并希望从dfgrouby2
.
2 个问题
- 如何在 dfgrouby2 中检索相应的子组;
- 如果 dfgrouby2 中不存在 (iA,iB) 索引,如何捕获。
循环工作正常,文档显示具有多索引的数据帧使用 .loc[(index tuple)],但显然不是 DataFrameGroupBy 对象。
广泛搜索。也许没有使用正确的描述符。
for (iA,iB),eachgroup1 in dfgrouby1:
eachgroup2 =dfgrouby2.loc[(iA,iB)]
#do things with eachgroup1['C':'Q'] vs. eachgroup2['C':'Q']
AttributeError: 'DataFrameGroupBy' object has no attribute 'loc'
也试过:
eachgroup2 =dfgrouby2[[iA,iB]]
KeyError: "Columns not found: 204, 34"
OR
eachgroup2 =dfgrouby2[(iA,iB)]
KeyError: "Columns not found: 204, 34"
注意:204, 34 是 iA,iB 的第一个值
解决方案
get_group 是我找不到的语句。这会从第二个 groupby 中拉出相应的组。一个简单的 try/except 就足够了。
for (iA,iB),eachgroup1 in dfgrouby1:
try:
eachgroup2 =dfgrouby2.get_group(iA,iB)
#comparison code for eachgroup1 and eachgroup2
except:
#missing statement/or exception code
推荐阅读
- python - 如何从文本文件中获取某个值
- xamarin.forms - 在 StartForeground 运行时无法启动 Zxing
- java - 保存对象的 toString 值时出现 Stackoverflow 错误 - Java/Hibernate/Spring
- java - 浏览器向自己的服务器发送空请求
- elixir - 使用 cons 运算符“|” 带有关键字列表
- c - 打印数独盒编号
- reactjs - 不能使用带有情感 js 和 typescript 的样式组件的道具
- c - 没有符号解析怎么能编译?
- python - numpy - 16、(16) 和 (16,) 之间的形状差异
- vim - vim将文本添加到多行的开头,不包括带替换的空格