Sto attualmente iterando su un oggetto groupby nel solito modo
for key, df_reduced in df.groupby(level="level_key"):
Esiste invece un modo semplice per scorrere tutti gli ennesimi gruppi del gruppo? Ad esempio, il 1 ° gruppo, 4 ° gruppo, 7 ° gruppo ecc.
Un modo per farlo sarebbe
counter = 0
for key, df_reduced in df.groupby(level="level_key"):
counter += 1
counter = counter % 3
if counter != 0:
continue
C'è un modo più pulito per fare questo, ad es. per una lista standard di python da ripetere su ogni terzo elemento che vorrei fare
for l in list[::3]:
risposte:
2 per risposta № 1Puoi provare GroupBy.nth
GroupBy.nth (n, dropna = None) [fonte] Prendi l'ennesima riga da ogni gruppo se n è un int, o un sottoinsieme di righe se n è un elenco di ints.
Specificando as_index = False in groupby mantiene l'indice originale.
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)
produzione
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