Quelle est la façon Pythonique de découper une trame de données en plusieurs plages d'index (par exemple, par 10:12
et 25:28
)?
Je veux cela d'une manière plus élégante:
df = pd.DataFrame({'a':range(10,100)})
df.iloc[[i for i in range(10,12)] + [i for i in range(25,28)]]
Résultat:
a
10 20
11 21
25 35
26 36
27 37
Quelque chose comme ça serait plus élégant:
df.iloc[(10:12, 25:28)]
Vous pouvez utiliser numpy r_
"astuce de découpage":
df = pd.DataFrame({'a':range(10,100)})
df.iloc[pd.np.r_[10:12, 25:28]]
Donne:
a
10 20
11 21
25 35
26 36
27 37
Vous pouvez profiter de pandas isin function.
df = pd.DataFrame({'a':range(10,100)})
ls = [i for i in range(10,12)] + [i for i in range(25,28)]
df[df.index.isin(ls)]
a
10 20
11 21
25 35
26 36
27 37