Hice un código en el que elijo la forma de onda sísmica de la onda P, básicamente es una selección de tiempo a lo largo de la forma de onda, también calculo la relación señal-ruido y otras variables.
Aquí está parte de mi código.
for tr in st:
tr_cut = tr.trim(A, B) #cut the waveform from A to B section
#Here starts to compute the P time, Signal-to-noise, etc
scnl, picks, polarity, snr, uncert = picker.picks(tr_cut)
all_ = []
for i in range(len(picks)):
print (scnl, picks[i], polarity, snr, uncert) # this is the output
# Here I try to append the data inside a DataFrame
all_.append(
{
'scnl': scnl,
'picks': picks[i],
'snr': snr,
'polarity': polarity,
'uncert': uncert
}
)
pd.DataFrame(all_)
Pero no puedo agregar el resultado de la función que especifico aquí
scnl, selecciones, polaridad, snr, uncert = picker.picks(tr_cut)
Sin embargo, si imprimo la salida de la función obtengo los resultados
imprimir (scnl, picks[i], polaridad, snr, uncert)
da una salida como esta:
BBOJ.SHZ.BO., UTCDateTime(2020, 11, 10, 13, 9, 59, 200000), '', 8.1999993, 0.02
BBOD.SHZ.BO., UTCDateTime(2020, 11, 10, 13, 10, 4, 260000), 'D', 9.5, 0.02
BBOB.SHZ.BO., UTCDateTime(2020, 11, 10, 13, 10, 7, 620000), 'C', 8.90004, 0.040000
El objetivo de mi idea es agregar toda esta salida dentro del DataFrame pero no puedo hacerlo. Además, mientras intento convertir mi DataFrame a CSV, aparece el siguiente error.
El objeto 'lista' no tiene el atributo 'to_csv'
¿Te importaría darme tu opinión sobre lo que hago?esta mal, gracias
Tonino
------------------------------------
¿Al agregar, aparece algún error o simplemente no funciona? Con la información actual, parece que lo siguiente resolverá su problema:
Tienes que asignar tu marco de datos a alguna variable (digamos df). Además, parece que querrás crear un marco de datos después de haber terminado de iterar sobre all_. Si ese es el caso, debes realizar la siguiente asignación fuera del bucle for.
df = pd.DataFrame(all_)
Acerca de tu segundo error, parece que has probado all_.to_csv(). Como all_ es una lista, to_csv no funcionaría. Probablemente querrás hacer df.to_csv().
5
No obtuve errores, obtuve un DataFrame vacío. tenías razón sobre df.to_csv(all_), sin embargo, también es un archivo csv vacío
-tonino
28/03/2021 a las 19:05
prueba df = pd.DataFrame.from_dict(all_, orient='columns'), ¿funcionó?
- Profundo
Mamá28 de enero de 2021 a las 19:11
Los mismos resultados tengo un DataFrame vacío, ¿crees que mover all_=[] fuera del primer bucle for ayudará?
-tonino
28/03/2021 a las 19:21
funcionó sacando todo = [] ahora tengo el DataFrame con información
-tonino
28 de marzo de 2021a las 19:26
Estaba intentando reproducir el error pero no pude. ¡Me alegro de que esté funcionando ahora!
- Profundo
28/03/2021 a las 19:33
------------------------------------
Para que funcione modifiqué un poco el código con sugerencias de @Deep.
all_ = []
for tr in st:
tr_cut = tr.trim(A, B) #cut the waveform from A to B section
#Here starts to compute the P time, Signal-to-noise, etc
scnl, picks, polarity, snr, uncert = picker.picks(tr_cut)
for i in range(len(picks)):
print (scnl, picks[i], polarity, snr, uncert) # this is the output
# Here I try to append the data inside a DataFrame
all_.append(
{
'scnl': scnl,
'picks': picks[i],
'snr': snr,
'polarity': polarity,
'uncert': uncert
}
)
df = pd.DataFrame.from_dict(all_, orient='columns')
df.to_csv("Picks.csv")
Mover la variable all_ = [] fuera del primer bucle resolvió mi problema