【问题标题】:How to slice groupby pandas如何切片 groupby 熊猫
【发布时间】:2022-01-05 17:42:38
【问题描述】:

在代码之后我有 40.000 个组:

groups=data.groupby('A')

我需要像 10.000 的子组一样细分它们,当然不要重叠并保持 groupby 结构。 像 group1=groups[0:10000], group2=groups[10000:20000]... 在其他脚本中重新使用它们。我该怎么做?

谢谢!

【问题讨论】:

  • 接受并支持您认为有帮助的解决方案,这就是社区保持动力的方式。

标签: python pandas dataframe group-by


【解决方案1】:

在这种情况下,您可以简单地使用 iloc 进行切片

group1=groups.iloc[0:10000,:]
group2=groups.iloc[10000:20000,:]
.
group3=groups.iloc[30000:40000,:]

这是您想要根据所需的索引或行数进行切片的时候。

如果您想按类别进行操作,那么在执行 b 组之后您可以简单地执行此操作

groups=groups.groupby(a).agg()
group1=groups.loc['category 1']

问题中提到的代码聚合未提及哪个无效请参阅链接以了解 groupby 的工作原理groupby

【讨论】:

  • 谢谢,但它给了我“'DataFrameGroupBy' 对象没有属性 'iloc'”
  • 在执行 groupby 之前执行 iloc
  • amd groupby 到底没有任何聚合是无效的,
  • 我不能这样做,因为我想要前 10000 个组而不是行,所以在我需要组之前,然后只选择前 10.000 个
  • 只需执行此操作 Groups[Groups['A'].isin( Groups.A.unique()[:10000] )] 这绝对有效。只是 d 这不做任何组 vefore 这样做只是在数据帧上这样做
【解决方案2】:

除非您在之后立即进行聚合,否则 groupby 可能会过度执行此任务。

data = data.set_index('A')
group_idx = data.index.drop_duplicates()
sub_group_1 = data.loc[group_idx[:10000]]

将为您提供前 10000 个组

【讨论】:

    猜你喜欢
    • 2020-05-10
    • 2020-03-17
    • 2019-02-24
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2023-01-26
    相关资源
    最近更新 更多