为了使索引能够与两个 DataFrame 一起使用,它们必须具有可比较的索引。在这种情况下它不会工作,因为一个DataFrame
一个是整数索引,另一个是日期。
然而,正如你所说can过滤器使用bool
array。您可以访问该数组Series
via .values
。然后可以将其应用为过滤器,如下所示:
df # pandas.DataFrame
s # pandas.Series
df[s.values] # df, filtered by the bool array in s
例如,使用您的数据:
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]
返回以下内容:
High Low Close
2009-02-11 30.20 29.41 29.87
2009-02-17 29.35 28.74 28.90
如果您只需要“高”列,您可以按正常方式对其进行过滤(在“高”列之前或之后)bool
筛选):
df['High'][s.values]
# Or: df[s.values]['High']
为了得到你的目标输出(作为Series
):
2009-02-11 30.20
2009-02-17 29.35
Name: High, dtype: float64