我试图修改数据帧df
以仅包含列closing\u price
中的值介于99和101之间的行,并尝试使用下面的代码执行此操作。
然而,我得到了错误
ValueError:序列的真值不明确。使用a.empty、a.bool()、a.item()、a.any()或a.all()
我想知道是否有一种不用循环就能做到这一点的方法。
df = df[(99 <= df['closing_price'] <= 101)]
还有一个更好的选择-使用query()方法:
In [58]: df = pd.DataFrame({'closing_price': np.random.randint(95, 105, 10)})
In [59]: df
Out[59]:
closing_price
0 104
1 99
2 98
3 95
4 103
5 101
6 101
7 99
8 95
9 96
In [60]: df.query('99 <= closing_price <= 101')
Out[60]:
closing_price
1 99
5 101
6 101
7 99
更新:回复评论:
我喜欢这里的语法,但在尝试与expresison结合时,我失败了<代码>测向查询('(平均值2*sd)
In [161]: qry = "(closing_price.mean() - 2*closing_price.std())" +\
...: " <= closing_price <= " + \
...: "(closing_price.mean() + 2*closing_price.std())"
...:
In [162]: df.query(qry)
Out[162]:
closing_price
0 97
1 101
2 97
3 95
4 100
5 99
6 100
7 101
8 99
9 95
您应该使用()
对布尔向量进行分组,以消除歧义。
df = df[(df['closing_price'] >= 99) & (df['closing_price'] <= 101)]
还考虑系列之间:
df = df[df['closing_price'].between(99, 101)]
问题内容: 我正在使用数据库存储日志,其中“日期”列保存了插入日期。日期的格式为“ MM / DD / YY”。请任何人建议我如何在两个特定日期之间选择数据。例如,我尝试了这个: 但是我想这行不通,因为日期不是数字。谢谢您的帮助!:) 问题答案: 使用关键字:
问题内容: 我已将用户注册的日期保存为日期时间,例如 2011-12-06 10:45:36 。我已运行此查询,并且希望此项目 -2011-12-06 10: 45 : 36- 将被选择: 但是不是。存在任何优雅的方式,该如何选择?我最初的想法是,但是看起来不太好。 问题答案: 您的问题是日期的简短版本使用午夜作为默认设置。因此,您的查询实际上是: 这就是为什么您看不到10:45的记录的原因。 更
基本上,它应该在步骤中找到指标为43且步骤=1的行,然后将该值放在新列中,在这种情况下,它将是“Gross value Added”。任何帮助都将非常感谢!
问题内容: 我正在尝试在2列之间选择一个值。这是我的数据集 我的目标是(如果我的值为2)是选择 ID为1 (在from和to之间)的行。所以这是我正在使用的查询: 这是MySQL执行此查询时返回的结果: 我正在寻找的结果如下: 我尝试使用<和>等。但是,我总是得到两个结果。任何帮助将非常感激。 问题答案: 所以,您不希望下限具有包容性,对吗?
如何根据Pandas中某个列中的值从中选择行? 在SQL中,我将使用: 我试图查看熊猫的文档,但我没有立即找到答案。
我试图查看熊猫的文档,但我没有立即找到答案。