Je veux récupérer les 5 enregistrements suivants après l'index spécifique.

Par exemple, voici mon dataframe:

    Id  Name        code
    1   java         45
    2   python       78
    3   c            65
    4   c++          25
    5   html         74
    6   css          63
    7   javascript   45 
    8   php          44
    9   Ajax         88
    10  jQuery       92

Lorsque je fournis la valeur d'index sous la forme 3, le code doit récupérer les 5 valeurs suivantes de 3. Le résultat devrait donc ressembler à:

   Id  Name        code
    3   c            65
    4   c++          25
    5   html         74
    6   css          63
    7   javascript   45 

Je ne comprends pas comment faire cela. Mon code ne fonctionne pas comme je le souhaite.

J'utilise ce code pour récupérer les 5 enregistrements suivants:

data = df.iloc[df.index.get_loc(indexid):+5]
1
Prakash 3 juin 2020 à 17:26

3 réponses

Meilleure réponse

Je ferais:

idx = df.reset_index()['Id'].eq(8).idxmax()
ranges = np.r_[idx:idx+5] % len(df)

df.iloc[ranges]

Production:

   Id    Name  code
7   8     php    44
8   9    Ajax    88
9  10  jQuery    92
0   1    java    45
1   2  python    78
1
Quang Hoang 3 juin 2020 à 14:55

Fixez votre code

idx=df.index.get_indexer([3])[0]
df.iloc[idx:idx+5]
Out[9]: 
          Name  code
Id                  
3            c    65
4          c++    25
5         html    74
6          css    63
7   javascript    45
1
BEN_YO 3 juin 2020 à 14:36

Vous êtes proche, vous devez également ajouter 5 à la première position, alors utilisez:

#if Id is not index
#df = df.set_index('Id')

p = df.index.get_loc(3)
df = df.iloc[p:p+5]
print (df)
          Name  code
Id                  
3            c    65
4          c++    25
5         html    74
6          css    63
7   javascript    45
1
jezrael 3 juin 2020 à 14:41