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

时间:2019-07-04 11:02:32

标签: python csv sentiment-analysis finance

我正在研究与金融工具相关的新闻情绪的影响及其对金融工具价格的潜在影响。我试图获取每个新闻项的时间戳,将其截断为分钟数据(即删除第二和微秒的分量),并在那时以及在此之后的几次迭代中获得一种工具的基本股价,在我们的情况下为t + 2。但是,程序在文件中创建了twoM,但未返回任何计算出的价格变化

以前,我使用路透社Eikon及其功能进行研究,如下文所述。

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

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

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)

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

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为您收到警告是因为您试图对视图进行更改。只要有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
...