【问题标题】:DataFrameGroupBy select subset using multiindexDataFrameGroupBy 使用多索引选择子集
【发布时间】:2021-11-01 09:30:34
【问题描述】:

2 个完全相同的结构化数据帧。我将它们按 A 列和 B 列分组。

dfgrouby1=df1.groupby(['A','B'])
dfgrouby2=df2.groupby(['A','B'])

我按子组(每个数据帧)遍历dfgrouby1,并希望从dfgrouby2 获取具有相同索引(iA,iB)的子组(数据帧)。

2 个问题

  1. 如何在dfgrouby2中检索对应的子组;
  2. 如果 (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


【解决方案1】:

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
     

【讨论】:

    猜你喜欢
    • 2020-09-05
    • 2017-03-12
    • 2018-10-20
    • 2017-11-27
    • 2020-01-12
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    相关资源
    最近更新 更多