我有一個從 Yahoo Finance 檢索到的多索引資料框列,并希望將其轉換為單索引串列。而不是讓每個符號(SPY,AMZN)對應于屬性(高,低,收盤),我需要有一個帶有符號名稱的額外列。新的交易品種列將具有重復的交易品種名稱,因為它顯示了每個交易日的最高/最低/收盤價。
下面是我想要的示例輸出。
樣本輸出
下面是雅虎財經在該資料幀上填充的多索引資料幀。
多索引資料框
這是從雅虎財經檢索資料的代碼。
#Import libraries
from pandas_datareader import data
import pandas as pd
import numpy as np
tickers = ['SPY','APPL','GOOGL']
start_date = '2020-01-01'
end_date = '2020-12-31'
panel_data = data.DataReader(tickers,'yahoo', start_date, end_date)
relv_data = panel_data[['High','Low','Close']]
#Inspect first 5 columns of pandas dataframe
print(relv_data.head())
#Display columns attributes
print(relv_data.columns)
希望熊貓資料框專家可以幫助我解決這個問題。謝謝!
uj5u.com熱心網友回復:
用于df.groupby()拆分每個索引并droplevel()洗掉股票標簽
for name, data in relv_data.groupby(level=1, axis=1):
print(f"----------{name}----------")
data.columns = data.columns.droplevel(1)
print(data)
你可以連接他們:
tickers_data = []
for ticker, data in relv_data.groupby(level=1, axis=1):
data.columns = data.columns.droplevel(1)
data = data.reset_index()
data.insert(0, 'ticker', ticker)
tickers_data.append(data)
result = pd.concat(tickers_data)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/331158.html
上一篇:PandasDataFrame,將前3行子集到滿足條件的行?
下一篇:根據條件從某個值增加資料框列
