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

113
Visualizações
Fecha de redondeo en el marco de datos en Python

Este es mi marco de datos

 ID Date Value Final Value 0 9560 12/15/2021 30 5.0 1 9560 07/3/2021 25 5.0 2 9560 03/03/2021 20 20.0 3 9712 08/20/2021 15 5.0 4 9712 12/31/2021 10 10.0 5 9920 04/11/2021 5 5.0

Aquí necesito crear otra columna 'Fecha redonda'. Obtenga la fecha de la columna 'Fecha' si la fecha es mayor que 15. La fecha debe redondearse a la fecha de inicio de ese mes o, de lo contrario, a la fecha de inicio del próximo mes. La salida esperada se da a continuación.

 ID Date Value Final Value Round Date 0 9560 12/15/2021 30 5.0 12/01/2021 1 9560 07/3/2021 25 5.0 07/01/2021 2 9560 03/03/2021 20 20.0 03/01/2021 3 9712 08/20/2021 15 5.0 09/01/2021 4 9712 12/31/2021 10 10.0 01/01/2022 5 9920 04/11/2021 5 5.0 04/01/2021
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

La solución se compone de algunos elementos:

  1. crear una función para redondear una sola fecha. Aunque se puede usar una función lambda anónima, es mejor crear una función porque podemos probar la función (prueba unitaria) para ver si funciona de la manera que esperamos.

  2. Primero necesitamos convertir la columna 'Fecha' en un tipo de fecha y hora. Para esto, podemos usar la función integrada de pandas pd.to_datetime().

  3. Por último, para crear la columna 'Fecha redonda', simplemente llamaremos a apply() en la columna 'Fecha' y le daremos nuestra función de fecha redonda.

Aquí está el código para redondear la columna Fecha en el marco de datos de pandas:

 from dateutil import relativedelta import pandas as pd # function to round date def round_date(date): # check if day is greater than 15 if date.day > 15: # change month to next month date += relativedelta.relativedelta(months=1) # change day to start of month date = date.replace(day=1) return date # read data df = pd.read_csv('your-path') # change date column to datetime df['Date'] = pd.to_datetime(df['Date'] ) # apply round date function to column df['Round Date'] = df['Date'].apply(round_date)

Aporte:

 ID Date Value Final Value 0 9560 12/15/2021 30 5.0 1 9560 07/03/2021 25 5.0 2 9560 03/03/2021 20 20.0 3 9712 08/20/2021 15 5.0 4 9712 12/31/2021 10 10.0 5 9920 04/11/2021 5 5.0

Producción:

 ID Date Value Final Value Round Date 0 9560 12/15/2021 30 5.0 12/01/2021 1 9560 07/03/2021 25 5.0 07/01/2021 2 9560 03/03/2021 20 20.0 03/01/2021 3 9712 08/20/2021 15 5.0 09/01/2021 4 9712 12/31/2021 10 10.0 01/01/2022 5 9920 04/11/2021 5 5.0 04/01/2021
over 4 years ago · Santiago Trujillo Relatório

0

Usando numpy's where :

 import pandas as pd import numpy as np df["Date"] = pd.to_datetime(df.date) df["date.rounded"] = np.where( df.Date.dt.day > 15, df.Date + pd.offsets.MonthBegin(0), df.Date + pd.offsets.MonthEnd(0) - pd.offsets.MonthBegin(1) )

Esto produce:

 Date date.rounded 0 2021-12-15 2021-12-01 1 2021-07-03 2021-07-01 2 2021-03-03 2021-03-01 3 2021-08-20 2021-09-01 4 2021-12-31 2022-01-01 5 2021-04-11 2021-04-01
over 4 years ago · Santiago Trujillo Relatório

0

Aquí hay una solución usando apply() y lambda

  1. Convierta valores en la columna Fecha a fecha y hora usando pd.to_datetime()
  2. use apply() y la función lambda para establecer el día en 1 y aumentar el valor del mes si el día de la condición es mayor que 15

Código:

 import pandas as pd from datetime import timedelta from dateutil.relativedelta import relativedelta df = pd.DataFrame({'Date': ['2/1/2021', '01/31/2021', '12/31/2021', '2021-12-01']}) df.Date = pd.to_datetime(df.Date) df['Round Date'] = df.Date.apply(lambda x: x.replace(day=1)+ relativedelta(months=1) if x.day > 15 else x.replace(day=1))

Aporte:

 Date 0 2/1/2021 1 01/31/2021 2 12/31/2021 3 2021-12-01

Producción:

 Date Round Date 0 2021-02-01 2021-02-01 1 2021-01-31 2021-02-01 2 2021-12-31 2022-01-01 3 2021-12-01 2021-12-01
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