Tengo un marco de datos de pandas que consta de algunas lecturas de sensores tomadas a lo largo del tiempo como esta:
diode1 diode2 diode3 diode4 Time 0.530 7 0 10 16 1.218 17 7 14 19 1.895 13 8 16 17 2.570 8 2 16 17 3.240 14 8 17 19 3.910 13 6 17 18 4.594 13 5 16 19 5.265 9 0 12 16 5.948 12 3 16 17 6.632 10 2 15 17
He escrito código para agregar otra fila con los medios de cada columna:
# List of the averages for the test. averages = [df[key].describe()['mean'] for key in df] indexes = df.index.tolist() indexes.append('mean') df.reindex(indexes) # Adding the mean row to the bottom of the DataFrame i = 0 for key in df: df.set_value('mean', key, averages[i]) i += 1
Esto me da el resultado que quiero, que es un DataFrame como este:
diode1 diode2 diode3 diode4 Time 0.53 7.0 0.0 10.0 16.0 1.218 17.0 7.0 14.0 19.0 1.895 13.0 8.0 16.0 17.0 2.57 8.0 2.0 16.0 17.0 3.24 14.0 8.0 17.0 19.0 3.91 13.0 6.0 17.0 18.0 4.594 13.0 5.0 16.0 19.0 5.265 9.0 0.0 12.0 16.0 5.948 12.0 3.0 16.0 17.0 6.632 10.0 2.0 15.0 17.0 mean 11.6 4.1 14.9 17.5
Sin embargo, estoy seguro de que esta no es la forma más eficiente de agregar la fila. Intenté usar append con los medios guardados como una serie de pandas, pero terminé con algo como esto:
diode1 diode2 diode3 diode4 mean 0 7.0 0.0 10.0 14.0 NaN 1 9.0 0.0 10.0 15.0 NaN 2 10.0 5.0 14.0 20.0 NaN 3 6.0 0.0 7.0 14.0 NaN 4 7.0 0.0 10.0 15.0 NaN 5 7.0 0.0 8.0 14.0 NaN 6 7.0 0.0 11.0 14.0 NaN 7 7.0 0.0 2.0 11.0 NaN 8 2.0 0.0 4.0 12.0 NaN 9 4.0 0.0 0.0 6.0 NaN 10 NaN NaN NaN NaN [11.6, 4.1, 14.9, 17.5]
Me preguntaba si había un medio más eficiente de agregar una fila con el índice 'media' y los promedios de cada columna al final de un DataFrame de pandas.
Utilice loc
para el ajuste con ampliación :
df.loc['mean'] = df.mean()
La salida resultante:
diode1 diode2 diode3 diode4 Time 0.53 7.0 0.0 10.0 16.0 1.218 17.0 7.0 14.0 19.0 1.895 13.0 8.0 16.0 17.0 2.57 8.0 2.0 16.0 17.0 3.24 14.0 8.0 17.0 19.0 3.91 13.0 6.0 17.0 18.0 4.594 13.0 5.0 16.0 19.0 5.265 9.0 0.0 12.0 16.0 5.948 12.0 3.0 16.0 17.0 6.632 10.0 2.0 15.0 17.0 mean 11.6 4.1 14.9 17.5