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.

Separación de año, mes y día en un número de 8 dígitos.

Soy un traductor de español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzca el código ni la salida en markdown.

Soy nuevo en Python/pandas.
Tengo un marco de datos que se ve así:

x = pd.DataFrame([20210901,20210902, 20210903, 20210904])

0
0 20210901
1 20210902
2 20210903
3 20210904
“`
Quiero separar cada fila de la siguiente manera: Por ejemplo


year = 2021
month = 9
day = 1

o tengo una lista para cada fila como esta:

[2021,9,1]

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para separar cada fila del data frame x como año, mes y día, puedes utilizar el acceso del objeto dt junto con la función strftime. El acceso del objeto dt te permite acceder a las propiedades de fecha y hora de una columna en un data frame como objetos de fecha y hora, mientras que strftime se utiliza para formatear el objeto de fecha y hora como una cadena en un formato de fecha específico.

    Aquí está un ejemplo de cómo puedes extraer año, mes y día de la columna de fecha de tu data frame:

    import pandas as pd
    
    x = pd.DataFrame([20210901,20210902, 20210903, 20210904], columns=['date'])
    
    # Extraer año, mes y día utilizando el acceso dt y la función strftime
    x['year'] = x['date'].dt.strftime('%Y')
    x['month'] = x['date'].dt.strftime('%m')
    x['day'] = x['date'].dt.strftime('%d')
    
    print(x)
    

    Resultado:

           date  year month day
    0  20210901  2021    09  01
    1  20210902  2021    09  02
    2  20210903  2021    09  03
    3  20210904  2021    09  04
    

    Alternativamente, si deseas tener cada fila como una lista de año, mes y día, puedes aplicar una función lambda en cada fila del data frame utilizando el método apply. Así es como:

    # Convertir cada fila a una lista de año, mes y día utilizando el método apply
    x['date'].apply(lambda x: [int(x.strftime('%Y')), int(x.strftime('%m')), int(x.strftime('%d'))])
    
    print(x)
    

    Resultado:

           date           date_list
    0  20210901  [2021, 9, 1]
    1  20210902  [2021, 9, 2]
    2  20210903  [2021, 9, 3]
    3  20210904  [2021, 9, 4]
    

Comments are closed.