【问题标题】:Multiindex Filterings of grouped data分组数据的多索引过滤
【发布时间】:2023-04-08 20:47:01
【问题描述】:

我有一个 pandas 数据框,我在其中完成了 groupby。 groupby 结果如下所示:

如您所见,此数据框有一个多级索引 ('ga:dimension3','ga:data') 和一个单列 ('ga:sessions')。

我希望使用第一级索引 ('ga:dimension3') 和每个第一级索引值的第一个日期创建一个数据框:

我不知道该怎么做。

感谢指导。

提前致谢。

【问题讨论】:

标签: python pandas-groupby multi-index


【解决方案1】:

受@ggaurav 建议使用 first() 的启发,我认为以下应该完成工作(df 是您提供的数据,在组之后):

result=df.reset_index(1).groupby('ga:dimension3').first()

【讨论】:

  • 这似乎有效(对我来说 - 我必须更彻底地检查它,但看起来不错)。 reset_index 的目的是什么,为什么reset_index(1)
  • 我们需要它才能重新组合
  • 您能再解释一下吗?看起来重置将 df 更改回单个索引,日期成为一列。然后 groupby 只需为每个维度 3 获取新分组的日期/会话中的第一行。
  • 没错。日期再次成为一列,但它与您的原始数据不一样。它保留了您的第一个 groupby 给出的结构
【解决方案2】:

您可以直接使用first。由于您需要仅基于 'ga:dimension3' 的数据,因此您需要对其进行分组(或 level=0)

df.groupby(level=0).first()

不使用groupby,可以获取0级索引值,删除重复的,保留第一个。

df[~df.index.get_level_values(0).duplicated(keep='first')]

【讨论】:

  • 我可能没有说清楚。我已经完成了 groupby (这是第一张图片)。我只想要每个 'ga:dimension3' (level=0) 值的第一个日期 (level=1) 和相应的值 ('ga:sessions')
  • 我已经更新了没有 groupby 的答案。
  • 成功了吗?我采用了类似的数据框,它似乎在那里工作。
  • 是的。有用且很好的答案,但绿色检查转到@ioaTzimas 以获得稍微干净的语法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 2021-01-19
  • 1970-01-01
  • 2014-03-04
  • 2022-01-17
相关资源
最近更新 更多