Preciso excluir as três primeiras linhas de um quadro de dados nos pandas.
Eu sei df.ix[:-1]
que removeria a última linha, mas não consigo descobrir como remover as primeiras n linhas.
Preciso excluir as três primeiras linhas de um quadro de dados nos pandas.
Eu sei df.ix[:-1]
que removeria a última linha, mas não consigo descobrir como remover as primeiras n linhas.
Respostas:
groupby()
? Isso funciona, mas retorna colunas duplicadas no índicedf=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()
. Algo como df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
.
Eu acho que uma maneira mais explícita de fazer isso é usar drop.
A sintaxe é:
df.drop(label)
E, como apontado por @tim e @ChaimG, isso pode ser feito no local:
df.drop(label, inplace=True)
Uma maneira de implementar isso pode ser:
df.drop(df.index[:3], inplace=True)
E outro uso "no local":
df.drop(df.head(3).index, inplace=True)
drop
pode até ser calculado no local (sem atribuição extra). Mais rápido e mais simples!
df.drop(label, inplace=True)
Você pode usar o python slicing, mas observe que ele não está no local.
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]])
O Pandas usa numeração baseada em zero, então 0 é a primeira linha, 1 é a segunda linha e 2 é a terceira linha.
inp0 = pd.read_csv ("bank_marketing_updated_v1.csv", skiprows = 2)
ou se você quiser fazer no quadro de dados existente
basta fazer o seguinte comando
header=3
argumento construtor que definirá essa linha como a linha do cabeçalho: stackoverflow.com/a/51822697/191246