Je dois supprimer les trois premières lignes d'un dataframe dans les pandas.
Je sais df.ix[:-1]
que supprimerait la dernière ligne, mais je ne peux pas comprendre comment supprimer les n premières lignes.
Je dois supprimer les trois premières lignes d'un dataframe dans les pandas.
Je sais df.ix[:-1]
que supprimerait la dernière ligne, mais je ne peux pas comprendre comment supprimer les n premières lignes.
Réponses:
groupby()
? Cela fonctionne mais renvoie des colonnes en double dans l'indexdf=pd.DataFrame({'v':np.arange(10).tolist()*2,'g':['a']*10+['b']*10});df.groupby('g').apply(lambda x: x.iloc[3:])
df=df.iloc[3:9]
?
pd.concat()
. Quelque chose comme df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
.
Je pense qu'une manière plus explicite de faire cela est d'utiliser drop.
La syntaxe est:
df.drop(label)
Et comme l'ont souligné @tim et @ChaimG, cela peut être fait sur place:
df.drop(label, inplace=True)
Une façon de mettre en œuvre cela pourrait être:
df.drop(df.index[:3], inplace=True)
Et une autre utilisation "en place":
df.drop(df.head(3).index, inplace=True)
drop
peut même être calculé sur place (sans affectation supplémentaire). Plus rapide et plus simple!
df.drop(label, inplace=True)
Vous pouvez utiliser le découpage en 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
pandas
?
df.drop(df.index[[0,2]])
Pandas utilise une numérotation basée sur zéro, donc 0 est la première ligne, 1 est la deuxième ligne et 2 est la troisième ligne.
inp0 = pd.read_csv ("bank_marketing_updated_v1.csv", skiprows = 2)
ou si vous voulez faire dans un dataframe existant
faites simplement la commande suivante
header=3
argument de constructeur qui définira cette ligne comme ligne d'en-tête: stackoverflow.com/a/51822697/191246