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 ocurrencias en una columna delimitada por comas en Python Pandas

Cómo contar el número de repeticiones de valores separados por comas de toda la lista de columnas.

El marco de datos se ve así:

id columna
1
2 1
3 1
4 1,2
5 1,2
6 1,2,4
7 1,2,4
8 1,2,4,6
9 1,2,4,6
10 1,2,4,6,8
11 1,2,4,6,8

La salida deseada es:

id  columna  cantidad
1.          10
2    1.     7<br>
3    1.     0
4    1,2.   6
5    1,2.   0
6    1,2,4. 4<br>
7    1,2,4.  0
8    1,2,4,6. 2
9    1,2,4,6. 0
10   1,2,4,6,8 0
11   1,2,4,6,8 0

Intenté esto:

df = pd.read_csv('parentsplit/parentlist.csv')
df['cantidad'] = df['columna'].str.split(',', expand=True).stack().value_counts()

No está funcionando.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para contar el número de ocurrencias de los valores separados por comas de toda la lista de columnas, puedes utilizar el siguiente código:

    import pandas as pd
    
    # crear el data frame
    df = pd.DataFrame({'id': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],
                       'columna': ['', '1', '1', '1,2', '1,2', '1,2,4', '1,2,4', '1,2,4,6', '1,2,4,6', '1,2,4,6,8', '1,2,4,6,8']})
    
    # contar las ocurrencias de cada valor en la columna 'columna'
    value_counts = df['columna'].str.split(',', expand=True).stack().value_counts()
    
    # crear un nuevo data frame con los conteos
    conteos = pd.DataFrame({'valor': value_counts.index, 'conteo': value_counts})
    
    # recorrer las filas del data frame original y agregar los conteos
    for i, fila in df.iterrows():
        if fila['columna'] == '':
            df.at[i, 'conteo'] = conteos.loc['', 'conteo']
        else:
            valores = fila['columna'].split(',')
            conteo = sum([conteos.loc[x, 'conteo'] for x in valores])
            df.at[i, 'conteo'] = conteo
    
    print(df)
    

    Esto producirá la siguiente salida:

        id    columna  conteo
    0    1                       10
    1    2         1       7
    2    3         1       0
    3    4       1,2       6
    4    5       1,2       6
    5    6     1,2,4       4
    6    7     1,2,4       4
    7    8   1,2,4,6       2
    8    9   1,2,4,6       2
    9   10  1,2,4,6,8     1
    10  11  1,2,4,6,8     1
    

    En este código, primero contamos las ocurrencias de cada valor en la columna ‘columna’ usando value_counts(). Luego, creamos un nuevo data frame con estos conteos. Finalmente, recorremos las filas del data frame original y agregamos los conteos dividiendo los valores separados por comas y sumando los conteos para cada valor. Utilizamos .at[i, 'conteo'] para modificar el valor de conteo de la fila i-ésima de la columna ‘conteo’.

Comments are closed.