【发布时间】:2021-11-01 09:30:34
【问题描述】:
2 个完全相同的结构化数据帧。我将它们按 A 列和 B 列分组。
dfgrouby1=df1.groupby(['A','B'])
dfgrouby2=df2.groupby(['A','B'])
我按子组(每个数据帧)遍历dfgrouby1,并希望从dfgrouby2 获取具有相同索引(iA,iB)的子组(数据帧)。
2 个问题
- 如何在dfgrouby2中检索对应的子组;
- 如果 (iA,iB) 索引在 dfgrouby2 中不存在,如何捕获。
循环工作正常,文档显示具有多索引的数据帧使用 .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 的第一个值
【问题讨论】:
-
很难理解您在寻找什么。 DataFrameGroupBy 是一个 indexer,它只是一种在分组的受限窗口顺序中快速访问特定索引组的机制。一般来说,如果您只想对某个部分进行操作,您应该在分组之前设置子集或选择。
-
好的 - 那么这将如何应用到上面呢?在我对 df1 进行分组之前,我不知道我在 df2 中索引了哪些组。 TIA
标签: python python-3.x pandas pandas-groupby multi-index