Insertar fila en la posición dada en Pandas Dataframe

Insertar una fila en Pandas DataFrame es un proceso muy sencillo y ya hemos discutido enfoques sobre cómo insertar filas al comienzo de Dataframe . Ahora, analicemos las formas en que podemos insertar una fila en cualquier posición en el marco de datos que tenga un índice basado en enteros.
Solución #1: No existe ninguna función incorporada en pandas que nos ayude a insertar una fila en cualquier posición específica en el marco de datos dado. Entonces, vamos a escribir nuestra propia función personalizada para lograr el resultado.
Nota: insertar filas entre filas en Pandas Dataframe es una operación ineficiente y el usuario debe evitarla.
 

Python3

# importing pandas as pd
import pandas as pd
 
# Let's create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '12/2/2011', '13/2/2011', '14/2/2011'],
                    'Event':['Music', 'Poetry', 'Theatre', 'Comedy'],
                    'Cost':[10000, 5000, 15000, 2000]})
 
# Let's visualize the dataframe
print(df)

Producción : 
 

Ahora escribiremos una función personalizada para insertar una fila en cualquier posición dada en el marco de datos.
 

Python3

# Function to insert row in the dataframe
def Insert_row(row_number, df, row_value):
    # Starting value of upper half
    start_upper = 0
  
    # End value of upper half
    end_upper = row_number
  
    # Start value of lower half
    start_lower = row_number
  
    # End value of lower half
    end_lower = df.shape[0]
  
    # Create a list of upper_half index
    upper_half = [*range(start_upper, end_upper, 1)]
  
    # Create a list of lower_half index
    lower_half = [*range(start_lower, end_lower, 1)]
  
    # Increment the value of lower half by 1
    lower_half = [x.__add__(1) for x in lower_half]
  
    # Combine the two lists
    index_ = upper_half + lower_half
  
    # Update the index of the dataframe
    df.index = index_
  
    # Insert a row at the end
    df.loc[row_number] = row_value
   
    # Sort the index labels
    df = df.sort_index()
  
    # return the dataframe
    return df
  
# Let's create a row which we want to insert
row_number = 2
row_value = ['11/2/2011', 'Wrestling', 12000]
 
if row_number > df.index.max()+1:
    print("Invalid row_number")
else:
     
    # Let's call the function and insert the row
    # at the second position
    df = Insert_row(row_number, df, row_value)
  
    # Print the updated dataframe
    print(df)

Producción : 
 

En caso de que el número de fila dado no sea válido, digamos que el número total de filas en el marco de datos es 100, entonces el valor máximo de número de fila puede ser 101, es decir, agregar la fila en el último marco de datos. Cualquier número mayor que 101 dará un mensaje de error
  
Ejemplo #2: Otra función personalizada que usará la función Pandas.concat() para insertar una fila en cualquier posición dada en el marco de datos.
 

Python3

# importing pandas as pd
import pandas as pd
 
# Let's create the dataframe
df = pd.DataFrame({'Date':['10/2/2011', '12/2/2011', '13/2/2011', '14/2/2011'],
                    'Event':['Music', 'Poetry', 'Theatre', 'Comedy'],
                    'Cost':[10000, 5000, 15000, 2000]})
 
# Let's visualize the dataframe
print(df)

Producción : 
 

Una función personalizada para insertar una fila en cualquier posición dada en el marco de datos. 
 

Python3

# Function to insert row in the dataframe
def Insert_row_(row_number, df, row_value):
    # Slice the upper half of the dataframe
    df1 = df[0:row_number]
  
    # Store the result of lower half of the dataframe
    df2 = df[row_number:]
  
    # Insert the row in the upper half dataframe
    df1.loc[row_number]=row_value
  
    # Concat the two dataframes
    df_result = pd.concat([df1, df2])
  
    # Reassign the index labels
    df_result.index = [*range(df_result.shape[0])]
  
    # Return the updated dataframe
    return df_result
  
# Let's create a row which we want to insert
row_number = 2
row_value = ['11/2/2011', 'Wrestling', 12000]
 
if row_number > df.index.max()+1:
    print("Invalid row_number")
else:
 
    # Let's call the function and insert the row
    # at the second position
    df = Insert_row_(2, df, row_value)
 
    # Print the updated dataframe
    print(df)

Producción : 
 

Publicación traducida automáticamente

Artículo escrito por Shubham__Ranjan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *