Supprimer les trois premières lignes d'un dataframe dans pandas

J'ai besoin de supprimer les trois premières lignes d'un dataframe dans les pandas.

Je sais que df.ix[:-1] supprimerait la dernière ligne, mais je n'arrive pas à comprendre comment supprimer les N premières lignes.

94
demandé sur James C. 2013-05-06 14:35:58

5 réponses

Utilisation iloc comme vous utilisiez ix, mais appliquez une tranche différente...

df2 = df1.iloc[3:] #edited since .ix is now deprecated.

Vous donnera un nouveau df sans les trois premières lignes.

113
répondu bdiamante 2017-08-21 16:38:49

Je pense qu'une façon plus explicite de le faire est d'utiliser drop.

La syntaxe est:

df.drop(label)

Et comme indiqué par @ tim et @ChaimG, cela peut être fait sur place:

df.drop(label, inplace=True)

Une façon de mettre en œuvre ceci pourrait être:

df.drop(df.index[:3], inplace=True)

Et une autre utilisation "en place":

df.drop(df.head(3).index, inplace=True)
80
répondu drexiya 2016-03-08 09:14:59

Vous pouvez utiliser le tranchage python, mais notez qu'il n'est pas en place.

In [15]: import pandas as pd
In [16]: import numpy as np
In [17]: df = pd.DataFrame(np.random.random((5,2)))
In [18]: df
Out[18]:
          0         1
0  0.294077  0.229471
1  0.949007  0.790340
2  0.039961  0.720277
3  0.401468  0.803777
4  0.539951  0.763267

In [19]: df[3:]
Out[19]:
          0         1
3  0.401468  0.803777
4  0.539951  0.763267
4
répondu beardc 2013-05-10 17:25:47
df=df.iloc[n:]

N est la première ligne

2
répondu 176coding 2017-05-16 10:50:24
df.drop(df.index[[0,2]])

Pandas utilise la numérotation basée sur zéro, donc 0 est la première rangée, 1 est la deuxième rangée et 2 est la troisième rangée.

2
répondu Anupam khare 2017-07-20 00:33:18