Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

344
Vistas
¿Cómo agregar filas en una columna en función de valores repetidos en otra columna y finalmente mantener la primera fila en python?

Soy muy nuevo en el módulo de pandas de python.

Supongamos que tengo un marco de datos o una tabla de la siguiente manera:

 df = pd.DataFrame({ 'Column A': [12,12,12, 15, 16, 141, 141, 141, 141], 'Column B':['Apple' ,'Apple' ,'Apple' , 'Red', 'Blue', 'Yellow', 'Yellow', 'Yellow', 'Yellow'], 'Column C':[100, 50, np.nan , 23 , np.nan , 199 , np.nan , 1,np.nan] })

o tengo una tabla de datos de la siguiente manera:

 | Column A | Column B |Column C ----| -------- | ---------|-------- 0 | 12 | Apple |100 1 | 12 | Apple |50 2 | 12 | Apple |NaN 3 | 15 | Red |23 4 | 16 | Blue |NaN 5 | 141 | Yellow |199 6 | 141 | Yellow |NaN 7 | 141 | Yellow |1 8 | 141 | Yellow |NaN
  • Si se repiten los valores en la columna A, agregue los valores correspondientes en la columna C y pegue la suma en la nueva columna D (por ejemplo, hay 3 filas para 12, por lo tanto, debemos agregar los valores correspondientes 100 + 50 + NaN, y el resultado de la suma 150 debe almacenarse en la nueva columna D).

  • Si los valores de la columna A no se repiten, pegue directamente los valores de la columna C en la nueva columna D (como la fila 3), pero para NaN, debería ser 0 (como la fila 4).

¿Podría ayudarme a obtener un resultado como este en el cuaderno python jupyter:

 | Column A | Column B |Column C |Column D ----- | -------- | ---------|---------|--------- 0 | 12 | Apple |100 |150 1 | 15 | Red |23 |23 2 | 16 | Blue |NaN |0 3 | 141 | Yellow |199 |200
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

df.groupby("Column A", as_index=False).agg(B=("Column B", "first"), C=("Column C", "first"), D=("Column C", "sum")) # Column ABCD # 0 12 Apple 100.0 150.0 # 1 15 Red 23.0 23.0 # 2 16 Blue NaN 0.0 # 3 141 Yellow 199.0 200.0
over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay un enfoque

 df['Column D'] = df.groupby('Column A')['Column C'].transform('sum') df = df.drop_duplicates('Column A')

groupby('Column A') crea un grupo de filas para cada valor único en Column A . Luego ['Column C'].transform('sum') agrega los valores C para todas las filas en esos grupos.

Esta suma se guarda en la Columna D, y luego podemos eliminar los duplicados para quedarnos con el primero

Hay algunas suposiciones en esta solución. Agrupará los 12 valores en A incluso si no están uno detrás del otro, lo que puede o no ser lo que desea.

over 4 years ago · Santiago Trujillo Denunciar

0

df = df.set_index(df['Column A']).drop('Column A', axis=1) df['Column D'] = df.groupby('Column A')['Column C'].sum() df = df.drop_duplicates(subset=['Column B'])
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda