簡體   English   中英

我有一個帶有代碼列和日期列的 dataframe 表。 我想計算相應日期的股票價格

[英]I have a dataframe table with a ticker column and a date column. I want to calculate the price of the ticker at the corresponding date

這是指定為df的表:

ID 股票代碼 日期
1 PLTR 2022-01-07
2 GME 2022-01-06
3 資產管理公司 2022-01-06
4 好的 2022-01-07
5 抓住 2022-01-07
6 全部 2022-01-06
7 為了 2022-01-06

我想要這樣的東西:

ID 股票代碼 日期 價格
1 PLTR 2022-01-07 16.56 美元
2 GME 2022-01-06 131.03 美元
3 資產管理公司 2022-01-06 22.46 美元
4 好的 2022-01-07 24.76 美元
5 抓住 2022-01-07 6.81 美元
6 全部 2022-01-06 122.40 美元
7 為了 2022-01-06 21.26 美元

我嘗試使用 yahoo 財務工具df['Price'] = yf.download(df['ticker'],df['date'])['Close']但收到錯誤:AttributeError: 'Series' object has no屬性“分裂”

我還嘗試了 pandas_datareader(作為 web 導入),得到了同樣的錯誤: df.assign(Price=web.DataReader(list(df.ticker('\n')), 'yahoo', list(df.date)) )['關']

任何建議/想法我做錯了什么?

import pandas as pd
import pandas_datareader.data as web
from datetime import date

tickers = list(df.ticker)

prices = ( web.DataReader(tickers,data_source='yahoo',start=df.date.min().date(),end=df.date.max().date())['Close']
   .reset_index()
   .melt(id_vars=['Date'])
   .rename(columns={'Symbols':'ticker','Date':'date'})
)

prices:
日期 股票代碼 價值
0 2022-01-06 00:00:00 PLTR 16.74
1 2022-01-07 00:00:00 PLTR 16.56
2 2022-01-06 00:00:00 GME 131.03
3 2022-01-07 00:00:00 GME 140.62
4 2022-01-06 00:00:00 資產管理公司 22.46
5 2022-01-07 00:00:00 資產管理公司 22.99
6 2022-01-06 00:00:00 好的 25.03
7 2022-01-07 00:00:00 好的 24.76
8 2022-01-06 00:00:00 抓住 6.65
9 2022-01-07 00:00:00 抓住 6.81
10 2022-01-06 00:00:00 全部 122.4
11 2022-01-07 00:00:00 全部 125.95
12 2022-01-06 00:00:00 為了 21.26
13 2022-01-07 00:00:00 為了 20.19

現在合並它們:

df.merge(prices,on=['ticker','date'],how='left')
ID 股票代碼 日期 價值
0 1 PLTR 2022-01-07 00:00:00 16.56
1 2 GME 2022-01-06 00:00:00 131.03
2 3 資產管理公司 2022-01-06 00:00:00 22.46
3 4 好的 2022-01-07 00:00:00 24.76
4 5 抓住 2022-01-07 00:00:00 6.81
5 6 全部 2022-01-06 00:00:00 122.4
6 7 為了 2022-01-06 00:00:00 21.26

暫無
暫無

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

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