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