[英]Multiplying rows in a dataframe (pandas) by a series
我有這個用 yfinance 提取的財務數據 dataframe。 我試圖將每只股票的每日價格乘以反映投資組合持有的股票數量的頭寸向量(57 只 EDP.LS 股票,2 只 DIS 股票,其他都沒有)。 我正在使用的代碼如下,但我得到的只是 dataframe 的 NaN 大小,原始 df + 4 行索引為“0、1、2、3”和更多的 NaN。 我究竟做錯了什么?
from datetime import date
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
tickers = ['EDP.LS', 'DIS', 'GILD', 'FB'] #yahoo finance tickers
firstPositions = pd.Series([57, 2, 0, 0]) #order follows tickers list
today = date.today()
df = yf.download(tickers, start='2020-02-07', end=today)['Close']
firstValues = df.mul(firstPositions, axis=0)
先感謝您
如果您想將每列相乘使用axis = 1,那應該可以解決。
我們應該插入帶有你 mul serise 索引的股票代碼
tickers = ['EDP.LS', 'DIS', 'GILD', 'FB'] #yahoo finance tickers
firstPositions = pd.Series([57, 2, 0, 0],index= tickers)
然后我們可以做多個
firstValues = df.mul(firstPositions, axis=1)
tickers = ['EDP.LS', 'DIS', 'GILD', 'FB']
start_date = 'Your Start Date'
end_date = 'Your End Date'
exchange = 'yahoo'
column_name = 'Adj Close' # 'Open' 'High' 'Low' 'Close' 'Adj Close' 'Volume' #Your Columns
allData = pd.DataFrame()
finalTickers = []
for ticker in tickers:
try:
allData = pd.merge(allData, pd.DataFrame(pdr.get_data_yahoo(ticker, fields='price',
start=start_date, end=end_date)['Adj Close']),
right_index=True, left_index=True, how='outer')
# Appends tickers which have data
finalTickers.append(ticker)
except:
next
allData.columns = finalTickers
allData = allData.dropna(axis='columns')
allData
然后:
s = allData.mul(firstPositions_as_dataframe, axis=1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.