Necesito eliminar las primeras tres filas de un marco de datos en pandas.
Sé df.ix[:-1]
que eliminaría la última fila, pero no puedo entender cómo eliminar las primeras n filas.
Necesito eliminar las primeras tres filas de un marco de datos en pandas.
Sé df.ix[:-1]
que eliminaría la última fila, pero no puedo entender cómo eliminar las primeras n filas.
Respuestas:
groupby()
? Esto funciona pero devuelve columnas duplicadas en el í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 así como df2 = pd.concat([df.iloc[:3],df.iloc[10:]])
.
Creo que una forma más explícita de hacer esto es usar drop.
La sintaxis es:
df.drop(label)
Y como lo señalaron @tim y @ChaimG, esto se puede hacer en el lugar:
df.drop(label, inplace=True)
Una forma de implementar esto podría ser:
df.drop(df.index[:3], inplace=True)
Y otro uso "en el lugar":
df.drop(df.head(3).index, inplace=True)
drop
incluso se puede calcular en el lugar (sin asignación adicional). ¡Más rápido y más simple!
df.drop(label, inplace=True)
df = df.iloc[n:]
n cae las primeras n filas.
Puede usar el corte en python, pero tenga en cuenta que no está en su lugar.
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 usa numeración basada en cero, por lo que 0 es la primera fila, 1 es la segunda fila y 2 es la tercera fila.
inp0 = pd.read_csv ("bank_marketing_updated_v1.csv", skiprows = 2)
o si quieres hacerlo en el marco de datos existente
simplemente haz el siguiente comando
header=3
argumento del constructor que establecerá esa fila como la fila del encabezado: stackoverflow.com/a/51822697/191246