¿Es posible insertar una fila en una posición arbitraria en un contexto de datos usando Pandas? -- python campo con pandas camp Relacionados El problema

Is it possible to insert a row at an arbitrary position in a dataframe using pandas?


67
vote

problema

Español

Tengo un objeto de flujo de datos similar a este:

         onset    length 1      2.215    1.3 2     23.107    1.3 3     41.815    1.3 4     61.606    1.3 ...   

Lo que me gustaría hacer es insertar una fila en una posición especificada por algún valor de índice y actualizar los siguientes índices en consecuencia. E.G.:

         onset    length 1      2.215    1.3 2     23.107    1.3 3     30.000    1.3  # new row 4     41.815    1.3 5     61.606    1.3 ...   

¿Cuál sería la mejor manera de hacer esto?

Original en ingles

I have a DataFrame object similar to this one:

       onset    length 1      2.215    1.3 2     23.107    1.3 3     41.815    1.3 4     61.606    1.3 ... 

What I would like to do is insert a row at a position specified by some index value and update the following indices accordingly. E.g.:

       onset    length 1      2.215    1.3 2     23.107    1.3 3     30.000    1.3  # new row 4     41.815    1.3 5     61.606    1.3 ... 

What would be the best way to do this?

     
   
   

Lista de respuestas

69
 
vote
vote
La mejor respuesta
 

Podrías cortar y usar Concat para obtener lo que quieres.

  >>> import psutil >>> f = open('file.test', 'w') >>> p = psutil.Process() >>> p.open_files() [popenfile(path='/Users/username/file.test', fd=3)] >>> 2  

Esto producirá el flujo de datos en su salida de ejemplo. Por lo que estoy al tanto, Concat es el mejor método para lograr una operación de tipo de inserción en Pandas, pero es cierto que no estoy de ninguna manera un experto en pandas.

 

You could slice and use concat to get what you want.

line = DataFrame({"onset": 30.0, "length": 1.3}, index=[3]) df2 = concat([df.iloc[:2], line, df.iloc[2:]]).reset_index(drop=True) 

This will produce the dataframe in your example output. As far as I'm aware, concat is the best method to achieve an insert type operation in pandas, but admittedly I'm by no means a pandas expert.

 
 
   
   
28
 
vote

Me parece más legible ordenar en lugar de rebanar y concatenar.

  >>> import psutil >>> f = open('file.test', 'w') >>> p = psutil.Process() >>> p.open_files() [popenfile(path='/Users/username/file.test', fd=3)] >>> 3  
 

I find it more readable to sort rather than slice and concatenate.

line = DataFrame({"onset": 30.0, "length": 1.3}, index=[2.5]) df = df.append(line, ignore_index=False) df = df.sort_index().reset_index(drop=True) 
 
 
6
 
vote

Creo que es aún más fácil sin concar o agregar:

  >>> import psutil >>> f = open('file.test', 'w') >>> p = psutil.Process() >>> p.open_files() [popenfile(path='/Users/username/file.test', fd=3)] >>> 4  

(suponiendo que el índice está según lo dispuesto, a partir de 1)

 

I think it's even easier without concat or append:

df.loc[2.5] = 30.0, 1.3 df = df.sort_index().reset_index(drop=True) 

(Supposing that the index is as provided, starting from 1)

 
 
 
 
1
 
vote
  >>> import psutil >>> f = open('file.test', 'w') >>> p = psutil.Process() >>> p.open_files() [popenfile(path='/Users/username/file.test', fd=3)] >>> 5  

Esta solución está reemplazando a los valores de los índice que quiero agregar un índice sin reemplazar los valores del índice.

 
line = DataFrame({"onset": 30.0, "length": 1.3}, index=[3]) df2 = concat([df.iloc[:2], line, df.iloc[3:]]).reset_index(drop=True) 

this solution is replacing that index values i want to just add one index without replacing the index values.

 
 

Relacionados problema

0  Coincidencia de cadenas en Python Pandas DataFrame cuando hay diferentes posibilidades  ( String match in python pandas dataframe when there is different possibilities ) 
Ingrese la descripción de la imagen aquí Tengo un conteo de datos (300,000 filas) con 4 columnas. Tengo una columna "Modelo" donde tengo los siguientes va...

2  Python MultiPhreading no aumenta la velocidad  ( Python multithreading doesnt increase speed ) 
Tengo 2 archivos separados que contienen las coordenadas de un lugar y el otro que contiene la calle y el código postal. Mediante el uso de pandas Quiero ...

2  Pandas Groupby y Selector orden  ( Pandas groupby and selector order ) 
Di que tengo un contexto de datos con 3 columnas: Criteria Group Value 0 A 0 0.1 1 B 0 0.2 2 B 1 0.3 3 B ...

0  Fusionar con el minuto más cercano usando Pandas  ( Merge with the nearest minute using pandas ) 
Simplemente quiero fusionar dos cuadros de datos dentro de ± 1 min. AQUÍ NAME_DF con el conjunto de datos de muestra: Name Date A 2/19/2019 17:1...

-1  ¿Cómo lo convierto en este código OUTERHTML para sacar ciertos datos? (No sé cómo visualizarlo, así que quiero probar esto)  ( How do i loop over this outerhtml code to get out certain data i dont know ho ) 
Estoy tratando de obtener una lista que coincida con los distritos de la India a sus códigos de distrito, ya que fueron durante el censo de la población de 20...

0  El valor de la verdad de una serie es ambiguo. ¿Cómo puedo arreglar este error? [duplicar]  ( The truth value of a series is ambiguous how do i fix this error ) 
Esta pregunta ya tiene respuestas aquí : El valor de la verdad de una serie es ambiguo. Use A.EMPTY,...

1  ¿Puedes usar Pandas Groupby para agrupar filas, determinado sumando un valor de columna?  ( Can you use pandas groupby to group rows determined by summing a column value ) 
Me gustaría agrupar filas en un contexto de datos por valores de una columna. El ejemplo dado a continuación sería si estuviera agrupando los valores de 'Numb...

1  Pandas DataFrame al diccionario con tuplas como clave y valores  ( Pandas dataframe to dictionary with tuples as key and values ) 
Necesito ayuda para hacer lo siguiente: Tengo un archivo CSV como lo siguiente, cargado en un Frame 'DF'. Hay varias regiones, diferentes valores para la me...

8  Añadir la tasa de cambio a Pandas DataFrame  ( Add rate of change to pandas dataframe ) 
Tengo el siguiente fábrico de datos de Pandas: lastrun value 0 2013-10-24 13:10:05+00:00 55376 1 2013-...

2  Cambiar filas en pandas  ( Change rows in pandas ) 
Tengo una matriz en marco de datos de Pandas print dfMatrix 0 1 2 3 4 0 10000 10 8 11 10 1 10 100000 ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos