如何按日期将资产价格数据从一个 csv 文件匹配到另一个具有相关新闻的 csv 文件

How to match asset price data from a csv file to another csv file with relevant news by date

我正在研究与金融工具相关的新闻文章情绪的影响及其对其工具价格的潜在影响。我试图获取每条新闻的时间戳,将其截断为分钟数据(即删除秒和微秒部分)并获取当时工具的基本股价,以及在那之后的几个迭代,在我们的例子中为 t+ 2.然而,程序创建了 twoM 到文件,但没有 return 任何计算的价格变化

之前,我使用 Reuters Eikon 及其功能进行研究,如下文所述。

https://developers.refinitiv.com/article/introduction-news-sentiment-analysis-eikon-data-apis-python-example

但是,我不想使用 Eikon 提供的数据,而是想使用我自己的 csv 新闻文件和来自另一个 csv 文件的我自己的价格数据。我正在尝试匹配

excel_file = 'C:\Users\Artur\PycharmProjects\JRA\sentimenteikonexcel.xlsx'
df = pd.read_excel(excel_file)
sentiment = df.Sentiment
print(sentiment)


start = df['GMT'].min().replace(hour=0,minute=0,second=0,microsecond=0).strftime('%Y/%m/%d')
end = df['GMT'].max().replace(hour=0,minute=0,second=0,microsecond=0).strftime('%Y/%m/%d')

spot_data = 'C:\Users\Artur\Desktop\stocksss.csv'
spot_price_10 = pd.read_csv(spot_data)
print(spot_price_10)

df['twoM'] = np.nan


for idx, newsDate in enumerate(df['GMT'].values):
    sTime = df['GMT'][idx]
    sTime = sTime.replace(second=0, microsecond=0)
    try:
        t0 = spot_price_10.iloc[spot_price_10.index.get_loc(sTime),2]
        df['twoM'][idx] = ((spot_price_10.iloc[spot_price_10.index.get_loc((sTime + datetime.timedelta(minutes=10))),3]/(t0)-1)*100)
    except:
        pass
print(df)

但是,程序无法return两个M价格变化值

我假设您收到警告是因为您正试图对视图进行更改。一旦你有 2 [](一个用于列,一个用于行)你就只能阅读。您必须使用 lociloc 写入一个值:

...
try:
    t0 = spot_price_10.iloc[spot_price_10.index.get_loc(sTime),2]
    df.loc[idx,'twoM'] = ((spot_price_10.iloc[spot_price_10.index.get_loc((sTime + datetime.timedelta(minutes=10))),3]/(t0)-1)*100)
except:
    pass
...