В момента се повтарям по групов обект по обичайния начин
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