Acabo de empezar a estudiar pandas y tengo preguntas. En primer lugar, me gustaría preguntar esto.
Tengo marco de datos y es como a continuación.
Date Open High Low Close 2015-11-02 711.059998 721.619995 705.849976 721.109985 2015-11-03 718.859985 724.650024 714.719971 722.159973 2015-11-04 722.000000 733.099976 721.900024 728.109985 2015-11-05 729.469971 739.479980 729.469971 731.250000 2015-11-06 731.500000 735.409973 727.010010 733.760010lo sé
df["Close"].pct_change()haga el cambio porcentual de Cerrar a Cerrar.
Pero quiero agregar una nueva columna, "CloseToOpen", que es un cambio porcentual de "ayer Close to today Open".
Entonces, es "Abrir (Día 0) / Cerrar (Día -1) -1". Por supuesto, la primera fila debe ser "NaN" o cero porque no hay "cierre del día anterior".
¿Cómo puedo hacer esto con el código de Python Pandas?
¡Gracias chicos!
Esto es lo que quiero.
Date Open High Low Close CloseToOpen 2015-11-02 711.059998 721.619995 705.849976 721.109985 0.000000 2015-11-03 718.859985 724.650024 714.719971 722.159973 -0.003120 2015-11-04 722.000000 733.099976 721.900024 728.109985 -0.000222 2015-11-05 729.469971 739.479980 729.469971 731.250000 0.001868 2015-11-06 731.500000 735.409973 727.010010 733.760010 0.000342También puede usar operandos estándar para lograr lo que quería:
df['CloseToOpen'] = (df['Open'] / df['Close'].shift(1) - 1).fillna(0)Usar:
df['CloseToOpen'] = df['Open'].sub(df['Close'].shift()).div(df['Close'] - 1).fillna(0) print (df) Open High Low Close CloseToOpen Date 2015-11-02 711.059998 721.619995 705.849976 721.109985 0.000000 2015-11-03 718.859985 724.650024 714.719971 722.159973 -0.003120 2015-11-04 722.000000 733.099976 721.900024 728.109985 -0.000220 2015-11-05 729.469971 739.479980 729.469971 731.250000 0.001862 2015-11-06 731.500000 735.409973 727.010010 733.760010 0.000341