columnas suma pandas entre dos filas

diesel:

Tengo una trama de datos pandas con columnas identificadas como garrapatas, agua y temperatura, con unos pocos millones de filas (posiblemente mil millones en un conjunto completo de datos), pero se ve algo como esto

...
'Ticks'  'Water'    'Temp'
  215       4      26.2023
  216       1      26.7324
  217      17      26.8173
  218       2      26.9912
  219      48      27.0111
  220       1      27.2604
  221      19      27.7563
  222      32      28.3002
...

(Todas las temperaturas están en orden ascendente, y todo 'garrapatas' también están espaciadas linealmente y en orden ascendente también)

Lo que estoy tratando de hacer es reducir los datos a un único valor 'Agua' para cada plantas ha, valor entero 'Temp', y sólo el primer valor 'tick' (o el último, que en realidad no tiene mucho de un efecto sobre el análisis).

La dirección de la corriente que estoy trabajando en hacer esto es empezar en la primera fila y guardar el valor de la señal, comprobar si la temperatura es un número entero mayor valor que el anterior, agregue el valor del agua, pase a la siguiente fila comprobar el valor de la temperatura , agregue el valor del agua si no es un mayor número entero. Si el valor de la temperatura es un valor entero superior, añada el valor guardado 'tick' y el valor de la temperatura entero y el recuento de agua sumada a una nueva trama de datos.

Estoy seguro de que esto funciona, pero, estoy pensando que debe haber una manera de hacer esto mucho más eficiente el uso de algún tipo de aplicación de df.loco df.ilocya que todo está muy bien en orden ascendente.

Mi salida esperanzadora para esto sería un conjunto de datos mucho más corto con valores que ser algo como esto:

...
'Ticks'  'Water'  'Temp'
  215      24       26
  219      68       27
  222      62       28
...
ansev:

uso GroupBy.aggySeries.astype

new_df = (df.groupby(df['Temp'].astype(int))
            .agg({'Ticks' : 'first', 'Water' : 'sum'})
           #.agg(Ticks = ('Ticks', 'first'), Water = ('Water', 'sum'))
            .reset_index()
            .reindex(columns=df.columns)
         )
print(new_df)

Salida

   Ticks  Water  Temp
0    215     24    26
1    219     68    27
2    222     32    28

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=282860&siteId=1
Recomendado
Clasificación