/ / Прекарайте през всяка n-та група от обект с група - питон, панди

Loop през всяка n-та група на обект - python, pandas

В момента се повтарям по групов обект по обичайния начин

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

Има ли лесен начин да преминете през всяка n-та група в групата? Например, първата група, 4-та група, 7-ма група и т.н.

Един от начините да направите това ще бъде

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

Има ли по-чист начин да направите това, напр. за стандартен питон списък за цикъл над всеки 3-ти елемент ще направя

for l in list[::3]:

Отговори:

2 за отговор № 1

Може да искате да опитате GroupBy.nth

GroupBy.nth (n, dropna = Няма) [източник] Вземете n-тия ред от всяка група, ако n е int, или подмножество от редове, ако n е списък на ints.

Задаване на as_index = False в groupby запазва оригиналния индекс.

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)

продукция

   A    B
1  1  2.0
4  2  5.0

A    B
3  1  4.0

A    B
0  1  NaN
2  2  3.0