将 pandas 的 groupby 对象转换为数据帧列表

17

假设我有以下数据框,并且想按ys进行分组:

   xs  ys
0   0   0
1   1   0
2   2   1
3   3   1
我可以通过运行来完成这个任务。
grouped = df.groupby('ys')

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

我可以遍历这个新的groupby对象,但是我想要一个包含在以下循环中通过group访问的数据框的列表:

for name, group in grouped:
    do_something(group)

这是否可行?


你想要一个可以通过组名访问的列表吗?那是不可能的。你可能想要一个dict - juanpa.arrivillaga
不,我只想要数据框的列表,不关心它们的名称。刚刚意识到我的循环有误,现在已经更正了。 - David Stansby
1个回答

27

当然,只需要迭代遍历这些群组!

>>> 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]
>>>

当然...几乎在问题中回答了自己!感谢您的回答! - David Stansby
有人能解释一下[group for _, group in grouped]是如何工作的吗? - bohontw
1
@bcikili,它等同于[group for name, group in grouped]。下划线用于强调我们不关心名称。 - Evgenii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接