es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo contar el número de DataFrame duplicados después de usar groupby en pandas?

import pandas as pd

df = pd.read_csv('chim_work.csv')

df_col = df[['ID #','Init Acct Type','Subs Acct Type','Max Days Diff']]

df_drop_null = df_col.dropna()

df_group = df_drop_null.groupby('ID #')

for i, d in df_group:
    dfn = d.drop(columns=['ID #'])
    print(i)
    print(dfn)

Este código me proporciona mis ID #s adjuntos a DataFrames de 3 columnas.

Quiero averiguar qué DataFrames tienen duplicados, el ID # de los duplicados y el recuento. Luego crear nuevas etiquetas para ellos.

Entonces, la salida sería:

A
5 duplicados
Id: 101, 102, 105, 107, 120
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para identificar duplicados y su cantidad, podemos modificar el código existente de la siguiente manera:

    import pandas as pd
    from collections import Counter
    
    df = pd.read_csv('chim_work.csv')
    
    df_col = df[['ID #', 'Init Acct Type', 'Subs Acct Type', 'Max Days Diff']]
    
    df_drop_null = df_col.dropna()
    
    df_group = df_drop_null.groupby('ID #')
    
    for i, d in df_group:
        dfn = d.drop(columns=['ID #'])
        count = Counter(dfn.duplicated())
        if True in count:
            print(i)
            print(count[True], 'Duplicados')
            duplicados = dfn[duplicated]
            id_list = ', '.join([str(x) for x in duplicados.index.tolist()])
            print(f'Id: {id_list}\n')
    

    Usando el método Counter, podemos identificar la cantidad de duplicados y si existen o no.

    La salida debería lucir algo así:

    A
    5 Duplicados
    Id: 101, 102, 105, 107, 120
    
    B
    2 Duplicados 
    Id: 109, 111
    

    Podemos agregar nuevas etiquetas simplemente imprimiéndolas dentro del bucle for.

Comments are closed.