如何在数据框中迭代并比较字符串与手动输入?

2024-10-03 06:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据表: enter image description here

上图就是我从yfinance获得的AAPL股票的数据 newsdf是pandas数据帧,它具有来自另一个API调用的一组日期,该API调用具有特定新闻的日期

我有以下代码:

df['Boolean'] = df['Open'] < df['Close']
print(df)

if df['Boolean'] == 'False':
    for h in range(0, k):
        if newsdf[h] == df['Date']:
            print('Bearish signal ')
            print(h)
        else:
           print('Signal bullish')

我得到了一个错误:序列的真值是模糊的。使用a.empty、a.bool()、a.item()、a.any()或a.all()

编辑:我看到我正在比较整个布尔值,但我不能这样做,但我迭代布尔值列的方法是什么,查看值是“真”还是“假”,将值与newsdf进行比较并打印该索引


Tags: 数据代码apipandasdfifopen新闻
1条回答
网友
1楼 · 发布于 2024-10-03 06:28:00

试试这个,注释已经放在代码行上了

#package import
import pandas as pd
from io import StringIO

#data setup
newdf=pd.DataFrame({"h":['2021-01-04']})

raw_data= \
'''
Date Open Boolean
2021-01-04 132 False
2021-01-05 120 True
2021-01-06 123 False
'''
df=pd.read_csv(StringIO(raw_data),sep=" ")

#function to have a use case logic
def check_the_signal(df_row,newdf=newdf):
    
    if not df_row['Boolean']: # this is false
        if df_row['Date'] in list(newdf['h']): # caution when newdf is large dataset,list will be large 
            return 'Bearish signal '
        else:
            return 'Signal bullish'
    else:
        return "Neutral" # added for demo only!
df['single']=df.apply(check_the_signal,axis=1)# axis == 1 will send data at row level , saving the value in df, in case needed

enter image description here

相关问题 更多 >