循环分组数据框中的组
Posted
技术标签:
【中文标题】循环分组数据框中的组【英文标题】:Looping over groups in a grouped dataframe 【发布时间】:2018-01-29 13:25:36 【问题描述】:考虑这个小例子:
data="X":[1, 2, 3, 4, 5], "Y":[6, 7, 8, 9, 10], "Z": [11, 12, 13, 14, 15])
frame=pd.DataFrame(data,columns=["X","Y","Z"],index=["A","A","A","B","B"])
我想将frame
分组
grouped=frame.groupby(frame.index)
然后我想通过以下方式遍历组:
for group in grouped:
但我被困在下一步:如何将每个循环中的 group
提取为 pandas DataFrame,以便进一步处理它?
【问题讨论】:
How to loop over grouped Pandas dataframe?的可能重复 这很相似,但不是完全相同的问题。在这里,我错过了 for 命令的名称部分。另一个问题是循环或直接使用汇总函数之间的区别。 【参考方案1】:df.groupby
返回一个 2 元组的可迭代对象:索引和组。您可以像这样遍历每个组:
for _, g in frame.groupby(frame.index):
.... # do something with `g`
但是,如果你想对组执行一些操作,可能有比迭代更好的方法。
【讨论】:
好的,谢谢。我错过了这个问题,我得到了一个元组,所以它是这样工作的。谢谢。 @coldspeed ,我如何遍历解决方案中的各个组元素? @TonyMathew 在循环内你可以访问变量 g。【参考方案2】:这是一个例子:
groups = frame.groupby(level=0)
for n,g in groups:
print('This is group '+ str(n)+'.')
print(g)
print('\n')
输出:
This is group A.
X Y Z
A 1 6 11
A 2 7 12
A 3 8 13
This is group B.
X Y Z
B 4 9 14
B 5 10 15
【讨论】:
以上是关于循环分组数据框中的组的主要内容,如果未能解决你的问题,请参考以下文章