Python 如何循环pandas groupby()中的每一行?

Python 如何循环pandas groupby()中的每一行?,python,pandas,Python,Pandas,假设我有: df=pd.DataFrame({'a':[1,2,3,4,5],'b':['cat_1','cat_1','cat_2','cat_2','cat_2']}) 我执行groupby: df.groupby(['b']).agg(['count','median']) 我希望遍历此调用返回的行,例如: for row in ?: print(row) 应该打印如下内容: ('cat_1', 2, 1.5) ('cat_2', 3, 4) 这将实现以下目的: for ite

假设我有:

df=pd.DataFrame({'a':[1,2,3,4,5],'b':['cat_1','cat_1','cat_2','cat_2','cat_2']})

我执行groupby:

df.groupby(['b']).agg(['count','median'])

我希望遍历此调用返回的行,例如:

for row in ?:
    print(row)
应该打印如下内容:

('cat_1', 2, 1.5)
('cat_2', 3, 4)

这将实现以下目的:

for item in df.groupby(['b']).agg(['count', 'median']).reset_index().values:
     # Perform operation on 'item' ...

这将实现以下目的:

for item in df.groupby(['b']).agg(['count', 'median']).reset_index().values:
     # Perform operation on 'item' ...

您误解了:
df.groupby(['b']).agg(['count','media'])
返回内存中的数据帧,而不是分组结果的迭代器

您的结果通常用以下方式表示:

res = df.groupby('b')['a'].agg(['count', 'median'])

print(res)

#        count  median
# b                   
# cat_1      2     1.5
# cat_2      3     4.0
可以通过或更有效地通过以下方式迭代数据帧:

如果您希望延迟计算,请迭代
groupby
对象,并对每个组独立执行计算。对于适合存储在内存中的数据,您应该认为这比迭代结果的数据帧要慢

for key, group in df.groupby('b'):
    print((key, group['a'].count(), group['a'].median()))

# ('cat_1', 2, 1.5)
# ('cat_2', 3, 4.0)

如果您确实面临内存问题,请考虑这些任务。

您误解了:<代码> df.GROPBY([B')]。AGG([计数],‘中值’)<代码>返回内存中<强>数据框< /强>,而不是群组结果的<强>迭代器< /强>。< /P> 您的结果通常用以下方式表示:

res = df.groupby('b')['a'].agg(['count', 'median'])

print(res)

#        count  median
# b                   
# cat_1      2     1.5
# cat_2      3     4.0
可以通过或更有效地通过以下方式迭代数据帧:

如果您希望延迟计算,请迭代
groupby
对象,并对每个组独立执行计算。对于适合存储在内存中的数据,您应该认为这比迭代结果的数据帧要慢

for key, group in df.groupby('b'):
    print((key, group['a'].count(), group['a'].median()))

# ('cat_1', 2, 1.5)
# ('cat_2', 3, 4.0)

<>如果你面对内存问题,考虑这些任务。

谢谢你的帮助!谢谢你的帮助!