当前位置: 首页 > 知识库问答 >
问题:

数据帧真假值

夔学智
2023-03-14

我现在有这个可以用的

df['AStrategy'] = df['Areturn'][df['BUY'] == True]
df['BStrategy'] = df['Breturn'][df['SELL'] == True]

我想添加一个条件,在这里我只会出售时,购买是虚假的如下,但它没有工作

df['AStrategy'] = df['Areturn'][df['BUY'] == True]
df['BStrategy'] = df['Breturn'][df['SELL'] == True & df['BUY'] == False]

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

为什么它不工作?

有什么建议吗?非常感谢。

共有2个答案

夏宪
2023-03-14

如果您只检查真/假,您只需执行以下操作:

df['BStrategy'] = df['Breturn'][df['SELL'] & ~df['BUY']]

由Python的操作员优先级解释。

因为:=更不合适,所以您的代码不起作用

我给您的解决方案之所以有效,是因为:~x的优先级高于

import pandas as pd
import numpy as np

np.random.seed(1234)

df = pd.DataFrame({
    'SELL':np.random.choice([True,False],6),
    'BUY':np.random.choice([True,False],6),
    'Breturn':np.random.randint(10,size=6),
})

df['BStrategy'] = df['Breturn'][df['SELL'] & ~df['BUY']]

print(df)

返回:

     BUY  Breturn   SELL  BStrategy
0   True        6  False        NaN
1  False        8  False        NaN
2  False        0   True        0.0
3  False        5  False        NaN
4  False        0   True        0.0
5  False        9   True        9.0

慎峻
2023-03-14
df['BStrategy'] = df['Breturn'][(df['SELL'] == True) & (df['BUY'] == False)]

它应该是有效的,要应用多个过滤器,您需要括号

 类似资料:
  • 我想知道当我们选择就地操作数据帧(与不就地操作相比)时,内存使用是否会显著减少。 我在Stack Overflow上做了一些搜索,发现了这篇文章,其中的答案是,如果操作没有就地完成,则返回数据框的副本(我想当有一个名为“就地”的可选参数时,这有点明显: P)... 如果我不需要保留原始的数据帧,只修改数据帧是有益的(也是合乎逻辑的),对吗? 背景: 我试图在按数据框中的特定“列”排序时获取顶部元素

  • 问题内容: 有人可以使用以下示例数据解释JavaScript Truthy和Falsy。我读过其他主题,但仍然感到困惑。 根据我的理解,我相信这是唯一的真理,而其余的都是虚假的-这是正确的吗? 问题答案: 据我了解,我相信var a = 1; 是唯一的真理,其余都是虚假的-这是正确的吗? 没有。 var a = 0; 数字零是 虚假的 。但是,请注意,字符串零是真实的。 var a = 10 ==

  • 问题内容: 我对分配给False,True的测试值感到困惑 要检查真实值,我们只需 假怎么样? 问题答案: 从Python样式指南中: 对于序列(字符串,列表,元组),请使用空序列为假的事实。 [..] 不要使用==将布尔值与True或False进行比较。

  • 我需要在我的mysql数据库中的表中更改列,以便列中当前为true的值更改为false,之前为false的值更改为true。 那么,在:值A:假值B:真之前 之后:值A:真值B:假 我该怎么做?试图为此编写一个液化迁移。我首先想到的是: 更新表设置列A=false,其中列A=true,设置列A=true,其中列A=false; 但我意识到,如果我首先将真值更改为假,那么所有值都将为假,然后MySQ

  • 我对浮点数有一个基本的了解,并且正在阅读这篇文章,其中说: 0.1 0.2:这等于0.3,但在浮点数中:为false。这是因为0.1、0.2和0.3不能精确地表示在基2浮点数中。 根据浮点数的性质,这是正确的,但我编写了一个简单的程序来测试: 但是输出实际上是。以下是我的两个问题: > 我想发生的是,因为C使用了从四舍五入到五舍五入的模式,所以在四舍五入之后,它恰好是真的,我的理解正确吗? 如果我

  • 我有两个数据帧df1和df2。df1就像一个具有以下值的字典 df2具有以下值: 我想基于df1数据帧中的,将df2拆分为3个新的数据帧。 日期,TLRA_权益栏应位于数据框 预期产出: > 数据帧 消费者,非周期性数据帧 请让我知道如何有效地做。我想做的是连接列名,例如,然后根据列名的前半部分分割数据帧。 代码: 但这很复杂。需要更好的解决方案。