【问题标题】:Convert a pandas groupby object to list of dataframes将 pandas groupby 对象转换为数据框列表
【发布时间】:2017-01-17 01:29:13
【问题描述】:

假设我有以下数据框,并希望按 ys 分组:

   xs  ys
0   0   0
1   1   0
2   2   1
3   3   1

我可以通过运行来做到这一点

grouped = df.groupby('ys')

我可以很好地遍历这个新的 groupby 对象,但我想要一个 group 在以下循环中访问的数据帧列表:

for name, group in grouped:
    do_something(group)

这可能吗?

【问题讨论】:

  • 您想要一个由组名访问的列表吗?这不可能。你可能想要dict
  • 不,我只想要一个数据框列表,而不关心名称。刚刚意识到我的循环是错误的,现在应该更正

标签: python pandas


【解决方案1】:

当然,只需遍历组!

>>> import pandas as pd, numpy as np
>>> df = pd.DataFrame(dict(xs=list(range(4)), ys=[0,0,1,1]))
>>> df
   xs  ys
0   0   0
1   1   0
2   2   1
3   3   1
>>> grouped = df.groupby('ys')
>>> dataframes = [group for _, group in grouped]
>>> dataframes
[   xs  ys
0   0   0
1   1   0,    xs  ys
2   2   1
3   3   1]
>>>

【讨论】:

  • 当然……这个问题几乎回答了我自己!感谢您的回答!
  • smn 可以解释一下 [group for _, group in grouped] 它是如何工作的吗?
  • @bcikili,相当于[group for name, group in grouped]。下划线用于强调我们不关心名称。
猜你喜欢
  • 2018-05-17
  • 2018-12-19
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 2021-03-22
  • 2020-03-27
相关资源
最近更新 更多