¿Cómo añadir datos en una sola celda mientras se escribe datos de múltiples bucles for en un archivo CSV a través de Pandas?
Problema:-
Tengo dos bucles anidados dentro de un bucle principal que extraen diferentes datos de un rango de 5 páginas.
Cada página tiene 5 filas, pero después de escribir los datos en un archivo CSV, solo obtengo 5 celdas en las cuales cada celda tiene 5 valores.
Solución que deseo :-
Quiero que todas las fechas y horas estén en filas diferentes, por lo que en total debería haber al menos 25 filas.
Mi código mínimo :-
all = []
for i in range(d, 0, -1):
driver.find_element_by_link_text(f' {i} ').click()
time.sleep(5)
c12 = []
d12 = []
date1 = driver.find_elements_by_class_name('Login_d')
for i in reversed(date1):
print(i.text)
c12.append(i.text)
if i is None:
break
date_time = driver.find_elements_by_class_name('Logout_d')
for i1 in reversed(date_time):
print(i1.text)
d12.append(i1.text)
if i1 is None:
break
z = [c12, d12]
all.append(z)
df = pd.DataFrame(all)
path = 'C:\\Application Data\\pyt_project\\datahub'
a1 = ['Fecha', 'Fecha_hora']
filename = dt.datetime.now().strftime("Login_logout_time_%d_%b_%y_%I_%M_%p.csv")
p1 = os.path.join(path, filename)
df.to_csv(p1, headers = a1, index=True)
print('impresión del resultado')
Resultado CSV que obtuve del código anterior
Fecha Fecha_hora
03 Nov 2021 08 Nov 2021 09 Nov 2021 10 Nov 2021 11 Nov 2021 | 18:39 12:59 13:05 12:57 12:57
Resultado CSV que quiero
Fecha Fecha_hora
03 Nov 2021 18:39
08 Nov 2021 12:59
09 Nov 2021 13:05
10 Nov 2021 12:57
11 Nov 2021 12:57
Cosas que intenté pero no funcionaron
df = pd.DataFrame({'Fecha': [c12],
'Fecha_hora': [d12]
},
columns=['Fecha', 'Fecha_hora'])
davy.ai
Una solución para obtener la salida deseada es utilizar un bucle for anidado para iterar a través de la lista de fechas y horas, y agregarlas individualmente a una nueva lista. Esta nueva lista se puede usar luego para crear el dataframe final y escribirlo en un archivo CSV. Así es como puedes modificar tu código para lograr esto:
Esto debería darte la salida deseada como se muestra arriba. Ten en cuenta que el argumento
index=False
en el métodoto_csv()
se utiliza para eliminar el índice de fila de la salida.