Deseo transponer esta fecha y hora en una columna con una etiqueta (nombre) asociada a las horas dentro del rango. Luego, finalmente, agréguelos a una tabla sqlite

He buscado e intentado algunas de las sugerencias aquí, pero no pude obtener lo que estaba buscando.

2019-10-2 Bob 2019-10-3 Bob 2019-10-4 Bob

from datetime import date,datetime
import pandas as pd
import sqlite3
import numpy as np
conn = sqlite3.connect('data.db')


name = 'Bob'
startDate = pd.to_datetime(str('10/02/2019'))
endDate = pd.to_datetime(str('10/09/2019'))
d=pd.date_range(start=startDate, end=endDate)

for i in d:
    df=pd.DataFrame({'Date':[i], 'Name':[name]})
df.transpose()
print(df)

Solo obtengo una fecha en una columna con un nombre, no el rango de fechas entre startDate y endDate.

1
RobE 4 oct. 2019 a las 00:47

1 respuesta

La mejor respuesta

IIUC, no use for-loop. Prueba esto:

name = 'Bob'
startDate = pd.to_datetime(str('10/02/2019'))
endDate = pd.to_datetime(str('10/09/2019'))
d=pd.date_range(start=startDate, end=endDate)

df=pd.DataFrame({'Date':d, 'Name':[name]*len(d)})

Out[918]:
        Date Name
0 2019-10-02  Bob
1 2019-10-03  Bob
2 2019-10-04  Bob
3 2019-10-05  Bob
4 2019-10-06  Bob
5 2019-10-07  Bob
6 2019-10-08  Bob
7 2019-10-09  Bob

En transpose (Nota: T es un alias para tranpose())

df.T

Out[925]:
                        0                    1                    2  \
Date  2019-10-02 00:00:00  2019-10-03 00:00:00  2019-10-04 00:00:00
Name  Bob                  Bob                  Bob

                        3                    4                    5  \
Date  2019-10-05 00:00:00  2019-10-06 00:00:00  2019-10-07 00:00:00
Name  Bob                  Bob                  Bob

                        6                    7
Date  2019-10-08 00:00:00  2019-10-09 00:00:00
Name  Bob                  Bob
0
Andy L. 3 oct. 2019 a las 21:59