Per l'indicizzazione di lavorare con due DataFrames devono avere indici comparabili. In questo caso non funzionerà perché uno DataFrame
ha un indice intero, mentre l'altro ha le date.
Tuttavia, come dici tu possibile filtro con un bool
serie. È possibile accedere all'array per Series
tramite .values
. Questo può essere quindi applicato come filtro come segue:
df # pandas.DataFrame
s # pandas.Series
df[s.values] # df, filtered by the bool array in s
Ad esempio, con i tuoi dati:
import pandas as pd
df = pd.DataFrame([
[30.20, 29.41, 29.87],
[30.28, 29.32, 30.24],
[30.45, 29.96, 30.10],
[29.35, 28.74, 28.90],
[29.35, 28.56, 28.92],
],
columns=['High','Low','Close'],
index=['2009-02-11','2009-02-12','2009-02-13','2009-02-17','2009-02-18']
)
s = pd.Series([True, False, False, True, False], name='bools')
df[s.values]
restituisce il seguente:
High Low Close
2009-02-11 30.20 29.41 29.87
2009-02-17 29.35 28.74 28.90
se si desidera solo la colonna alta , puoi filtrarlo normalmente (prima, o dopo il filtro bool
):
df['High'][s.values]
# Or: df[s.values]['High']
Per ottenere l'output di destinazione (come Series
):
2009-02-11 30.20
2009-02-17 29.35
Name: High, dtype: float64
Così, l'indice è il problema. Grazie! È stupefacente! Scusate per il ritardo. : D – Osora