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)
<>如果你面对内存问题,考虑这些任务。谢谢你的帮助!谢谢你的帮助!