[英]R scripting Error { : missing value where TRUE/FALSE needed on Dataframe
[英]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']]
您的由於以下原因而無法工作: ==
屬性比&
屬性少。 但是()
具有最高優先級,因此附上您的聲明有效。
我給您提供的解決方案之所以有效,是因為:〜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.