es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Llamando a función arbitraria desde una serie rodante de pandas

Puedo llamar a un método arbitrario definido mediante una variable de cadena en una serie de pandas. La forma en que lo haría sería así:

import pandas as pd

<p>nombre<em>del método = 'mean'
pd.Series([1, 2, 3]).<strong>getattr</strong>(nombre</em>del método)()
```</p>

Ahora quiero hacer lo mismo con una serie en movimiento de pandas, la forma en que lo haría sería así:

```python
import pandas as pd

<p>nombre<em>del método = 'mean'
pd.Series([1, 2, 3]).rolling(window=1).<strong>getattr</strong>(nombre</em>del método)()

Obtengo el siguiente error cuando lo intento:
python
AttributeError: 'Rolling' object has no attribute 'mean'

¿Existe alguna forma de llamar a un método arbitrario (media, mediana, max, min, cuantil) en una serie en movimiento de pandas?

¡Gracias!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de llamar a un método arbitrario (como media, mediana, máximo, mínimo, cuartil) en una serie rodante de pandas. Necesitarás utilizar el método apply en lugar de __getattr__. Aquí tienes un ejemplo de cómo llamar al método mean en una serie rodante:

    import pandas as pd
    
    nombre_metodo = 'mean'
    pd.Series([1, 2, 3]).rolling(window=1).apply(nombre_metodo)
    

    Esto debería darte el mismo resultado que llamar a mean en una serie regular de pandas. Puedes reemplazar nombre_metodo con cualquier otro método que exista para las series de pandas. Ten en cuenta que el método apply aplicará el método a cada ventana rodante, por lo que el resultado será una serie de pandas que contiene el resultado para cada ventana.

Comments are closed.