Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

647
Visualizações
Pandas/Python: establezca el valor de una columna en función del valor en otra columna

Necesito establecer el valor de una columna en función del valor de otra en un marco de datos de Pandas. Esta es la lógica:

 if df['c1'] == 'Value': df['c2'] = 10 else: df['c2'] = df['c3']

No puedo hacer que esto haga lo que quiero, que es simplemente crear una columna con nuevos valores (o cambiar el valor de una columna existente: cualquiera funciona para mí).

Si trato de ejecutar el código anterior o si lo escribo como una función y uso el método de aplicación, obtengo lo siguiente:

 ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

una forma de hacerlo sería utilizar la indexación con .loc .

Ejemplo

En ausencia de un marco de datos de ejemplo, inventaré uno aquí:

 import numpy as np import pandas as pd df = pd.DataFrame({'c1': list('abcdefg')}) df.loc[5, 'c1'] = 'Value' >>> df c1 0 a 1 b 2 c 3 d 4 e 5 Value 6 g

Suponiendo que desea crear una nueva columna c2 , equivalente a c1 excepto donde c1 es Value , en cuyo caso, le gustaría asignarlo a 10:

Primero, puede crear una nueva columna c2 y establecerla en equivalente a c1 usando una de las siguientes dos líneas (esencialmente hacen lo mismo):

 df = df.assign(c2 = df['c1']) # OR: df['c2'] = df['c1']

Luego, encuentre todos los índices donde c1 es igual a 'Value' usando .loc y asigne el valor deseado en c2 a esos índices:

 df.loc[df['c1'] == 'Value', 'c2'] = 10

Y terminas con esto:

 >>> df c1 c2 0 aa 1 bb 2 cc 3 dd 4 ee 5 Value 10 6 gg

Si, como sugirió en su pregunta, a veces solo desea reemplazar los valores en la columna que ya tiene , en lugar de crear una nueva columna, simplemente omita la creación de la columna y haga lo siguiente:

 df['c1'].loc[df['c1'] == 'Value'] = 10 # or: df.loc[df['c1'] == 'Value', 'c1'] = 10

Dandote:

 >>> df c1 0 a 1 b 2 c 3 d 4 e 5 10 6 g
over 4 years ago · Santiago Trujillo Relatório

0

Puede usar np.where() para establecer valores en función de una condición específica:

 #df c1 c2 c3 0 4 2 1 1 8 7 9 2 1 5 8 3 3 3 5 4 3 6 8

Ahora cambie los valores (o establezca) en la columna ['c2'] según su condición.

 df['c2'] = np.where(df.c1 == 8,'X', df.c3) c1 c2 c3 0 4 1 1 1 8 X 9 2 1 8 8 3 3 5 5 4 3 8 8
over 4 years ago · Santiago Trujillo Relatório

0

tratar:

df['c2'] = df['c1'].apply(lambda x: 10 if x == 'Value' else x)

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda