Ejemplo de marco de datos

df = pd.DataFrame(np.random.randint(2200, 3300, 50), index=[np.random.randint(0,6, 50)] ,columns=list('A'))

A continuación se muestra una muestra de cómo se verían los datos.

    A
5  2393
4  2421
0  3038
5  2914
4  2559
4  2314
5  3006
3  2553
0  2642
3  2441
3  2512
0  2412

Lo que me gustaría hacer es eliminar los primeros n (usemos 2 para este ejemplo) registros de índice. Entonces, a partir del ejemplo de datos anterior, se convertiría en ...

    A
4  2314
5  3006
3  2512
0  2412

Cualquier orientación aquí sería apreciada. No he podido conseguir nada para trabajar.

1
Casey Knauss 24 mar. 2017 a las 01:18

2 respuestas

La mejor respuesta

Use tail con -2

s.groupby(level=0, group_keys=False).apply(pd.DataFrame.tail, n=-2)

      A
0  2412
3  2512
4  2314
5  3006

Para realmente clavarlo

s.groupby(level=0, group_keys=False, sort=False).apply(pd.DataFrame.tail, n=-2)

      A
5  3006
4  2314
0  2412
3  2512
3
piRSquared 23 mar. 2017 a las 22:29

Si entiendo su pregunta, desea un nuevo marco de datos que elimine las primeras n filas de su marco de datos. Si eso es lo que desea, restablecería el índice, luego lo eliminaría según el índice predeterminado de los pandas y luego volvería a colocar el índice original. Así es como puedes hacer eso.

df = pd.DataFrame(data=np.random.randint(2200, 3300, 50), 
                  index=np.random.randint(0,6, 50),
                  columns=list('A'))
n = 5
print(df.head(n * 2))
df_new = df.reset_index().drop(range(n)).set_index('index')
print(df_new.head(n))
0
William Welsh 23 mar. 2017 a las 22:30