循环遍历groupby对象的每个第n组

时间:2017-02-14 15:56:13

标签: python pandas

我目前正在以通常的方式迭代groupby对象

Parent

是否有一种简单的方法可以迭代遍历groupby中的每个第n组?例如,第1组,第4组,第7组等。

这样做的一种方法是

for key, df_reduced in df.groupby(level='level_key'):

是否有更简洁的方法来做到这一点,例如。一个标准的python列表循环我将做的每一个项目

counter = 0
for key, df_reduced in df.groupby(level='level_key'):
    counter += 1
    counter = counter % 3
    if counter != 0:
        continue

1 个答案:

答案 0 :(得分:3)

您可以尝试GroupBy.nth

  

GroupBy.nth(n,dropna = None)[来源]   如果n是int,则从每个组中取第n行,如果n是int列表,则从行的子集中获取。

     

在groupby中指定as_index = False会保留原始索引。

proxy_pass

输出

import pandas as pd
import numpy as np

df = pd.DataFrame({'A': [1, 1, 2, 1, 2],'B': [np.nan, 2, 3, 4, 5]}, columns=['A', 'B'])


print '\n', df.groupby('A', as_index=False).nth(1)
print '\n', df.groupby('A', as_index=False).nth(2)
print '\n', df.groupby('A', as_index=False).nth(0)