簡體   English   中英

數據框真假值

[英]Dataframe True False Value

我目前有這個可行的

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().

為什么不起作用?

有什么建議嗎? 謝謝

df['BStrategy'] = df['Breturn'][(df['SELL'] == True) & (df['BUY'] == False)]

它應該起作用,要應用多個過濾器,您需要使用方括號

如果僅檢查是非,則可以執行以下操作:

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

你的問題

Python的Operator優先級解釋。

您的由於以下原因而無法工作: ==屬性比&屬性少。 但是()具有最高優先級,因此附上您的聲明有效。

我給您提供的解決方案之所以有效,是因為:〜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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM