gpt4 book ai didi

python - 使用 bool 系列/数组从 Pandas 数据框中选择

转载 作者:IT老高 更新时间:2023-10-28 20:47:28 24 4
gpt4 key购买 nike

我有一个数据框:

             High    Low  Close
Date
2009-02-11 30.20 29.41 29.87
2009-02-12 30.28 29.32 30.24
2009-02-13 30.45 29.96 30.10
2009-02-17 29.35 28.74 28.90
2009-02-18 29.35 28.56 28.92

和一个 bool 系列:

     bools
1 True
2 False
3 False
4 True
5 False

如何使用 bool 数组从数据框中进行选择以获得如下结果:

             High   
Date
2009-02-11 30.20
2009-02-17 29.35

最佳答案

要使索引与两个 DataFrame 一起工作,它们必须具有可比较的索引。在这种情况下,它不起作用,因为一个 DataFrame 有一个整数索引,而另一个有日期。

但是,正如您所说,您 可以 使用 bool array 进行过滤。您可以通过 .values 访问 Series 的数组。然后可以将其用作过滤器,如下所示:

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

如果您只想要 High 列,您可以正常过滤(在 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

关于python - 使用 bool 系列/数组从 Pandas 数据框中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37362984/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com