Analicemos cómo encontrar y soltar columnas duplicadas en un marco de datos de Pandas. Primero, creemos un marco de datos simple con los nombres de columna ‘Nombre’, ‘Edad’, ‘Domicilio’ y ‘Marcas’.
# Import pandas library import pandas as pd # List of Tuples students = [ ('Ankit', 34, 'Uttar pradesh', 34), ('Riti', 30, 'Delhi', 30), ('Aadi', 16, 'Delhi', 16), ('Riti', 30, 'Delhi', 30), ('Riti', 30, 'Delhi', 30), ('Riti', 30, 'Mumbai', 30), ('Ankita', 40, 'Bihar', 40), ('Sachin', 30, 'Delhi', 30) ] # Create a DataFrame object df = pd.DataFrame(students, columns =['Name', 'Age', 'Domicile', 'Marks']) # Print a original dataframe df
Producción:
Código 1: encuentre columnas duplicadas en un DataFrame.
Para encontrar columnas duplicadas, necesitamos iterar a través de todas las columnas de un DataFrame y para todas y cada una de las columnas buscará si ya existe alguna otra columna en DataFrame con el mismo contenido. En caso afirmativo, ese nombre de columna se almacenará en el conjunto de columnas duplicadas. Al final, la función devolverá la lista de nombres de columna de la columna duplicada.
# import pandas library import pandas as pd # This function take a dataframe # as a parameter and returning list # of column names whose contents # are duplicates. def getDuplicateColumns(df): # Create an empty set duplicateColumnNames = set() # Iterate through all the columns # of dataframe for x in range(df.shape[1]): # Take column at xth index. col = df.iloc[:, x] # Iterate through all the columns in # DataFrame from (x + 1)th index to # last index for y in range(x + 1, df.shape[1]): # Take column at yth index. otherCol = df.iloc[:, y] # Check if two columns at x & y # index are equal or not, # if equal then adding # to the set if col.equals(otherCol): duplicateColumnNames.add(df.columns.values[y]) # Return list of unique column names # whose contents are duplicates. return list(duplicateColumnNames) # Driver code if __name__ == "__main__" : # List of Tuples students = [ ('Ankit', 34, 'Uttar pradesh', 34), ('Riti', 30, 'Delhi', 30), ('Aadi', 16, 'Delhi', 16), ('Riti', 30, 'Delhi', 30), ('Riti', 30, 'Delhi', 30), ('Riti', 30, 'Mumbai', 30), ('Ankita', 40, 'Bihar', 40), ('Sachin', 30, 'Delhi', 30) ] # Create a DataFrame object df = pd.DataFrame(students, columns =['Name', 'Age', 'Domicile', 'Marks']) # Get list of duplicate columns duplicateColNames = getDuplicateColumns(df) print('Duplicate Columns are :') # Iterate through duplicate # column names for column in duplicateColNames : print('Column Name : ', column)
Producción:
Código 2: suelte columnas duplicadas en un DataFrame.
Para eliminar las columnas duplicadas, podemos pasar la lista de nombres de columnas duplicadas devuelta por nuestra función definida por el usuario getDuplicateColumns() al método Dataframe.drop() .
# import pandas library import pandas as pd # This function take a dataframe # as a parameter and returning list # of column names whose contents # are duplicates. def getDuplicateColumns(df): # Create an empty set duplicateColumnNames = set() # Iterate through all the columns # of dataframe for x in range(df.shape[1]): # Take column at xth index. col = df.iloc[:, x] # Iterate through all the columns in # DataFrame from (x + 1)th index to # last index for y in range(x + 1, df.shape[1]): # Take column at yth index. otherCol = df.iloc[:, y] # Check if two columns at x & y # index are equal or not, # if equal then adding # to the set if col.equals(otherCol): duplicateColumnNames.add(df.columns.values[y]) # Return list of unique column names # whose contents are duplicates. return list(duplicateColumnNames) # Driver code if __name__ == "__main__" : # List of Tuples students = [ ('Ankit', 34, 'Uttar pradesh', 34), ('Riti', 30, 'Delhi', 30), ('Aadi', 16, 'Delhi', 16), ('Riti', 30, 'Delhi', 30), ('Riti', 30, 'Delhi', 30), ('Riti', 30, 'Mumbai', 30), ('Ankita', 40, 'Bihar', 40), ('Sachin', 30, 'Delhi', 30) ] # Create a DataFrame object df = pd.DataFrame(students, columns =['Name', 'Age', 'Domicile', 'Marks']) # Dropping duplicate columns rslt_df = df.drop(columns = getDuplicateColumns(df)) print("Resultant Dataframe :") # Show the dataframe rslt_df
Producción: