Pour read_csv / read_html, vous pouvez utiliser par exemple un header=3argument de constructeur qui définira cette ligne comme ligne d'en-tête: stackoverflow.com/a/51822697/191246
cela ne supprime-t-il pas les 4 premières lignes au lieu des 3 premières lignes de la question d'origine?
tagoma
6
Non, ce n'est pas le cas. La position de départ de la tranche est toujours incluse.
bdiamante le
Quelqu'un sait comment faire cela dans un 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:])
citynorman
Donc, si vous souhaitez supprimer de la ligne 3 à la ligne 9, par exemple, comment le feriez-vous? df=df.iloc[3:9]?
MK
1
@MK si vous utilisez cette approche, vous pouvez l'utiliser en combinaison avec pd.concat(). Quelque chose comme df2 = pd.concat([df.iloc[:3],df.iloc[10:]]).
bdiamante le
100
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:
@tim, d'après cela , les inplaceopérations ne sont pas plus rapides. Aussi, plus simple est une question d'opinion: je trouve que c'est plus facile à lire quand le code n'a pas de inplaceparamètres.
header=3
argument de constructeur qui définira cette ligne comme ligne d'en-tête: stackoverflow.com/a/51822697/191246Réponses:
Utilisez
iloc
:vous donnera un nouveau df sans les trois premières lignes.
la source
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 commedf2 = 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:
Et comme l'ont souligné @tim et @ChaimG, cela peut être fait sur place:
Une façon de mettre en œuvre cela pourrait être:
Et une autre utilisation "en place":
la source
drop
peut même être calculé sur place (sans affectation supplémentaire). Plus rapide et plus simple!df.drop(label, inplace=True)
inplace
opérations ne sont pas plus rapides. Aussi, plus simple est une question d'opinion: je trouve que c'est plus facile à lire quand le code n'a pas deinplace
paramètres.n supprime les n premières lignes.
la source
Vous pouvez utiliser le découpage en python, mais notez qu'il n'est pas en place.
la source
pandas
?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.
la source
Un moyen simple consiste à utiliser tail (-n) pour supprimer les n premières lignes
df=df.tail(-3)
la source
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
la source