如何将多索引列转换为单索引列的熊猫数据框架?



我有一个从Yahoo Finance检索到的多索引数据框架列,并希望将其转换为单索引列表。我不需要让每个符号(SPY、AMZN)对应属性(high、low、close),而是需要一个带有符号名称的额外列。新的符号列将有重复的符号名称,因为它显示每个交易日的高/低/收盘。

下面是我想要的示例输出。


示例输出下面是yahoo finance在该数据框架上填充的多索引数据框架。


多索引dataframe下面是从雅虎财经检索数据的代码。

#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)

希望有人谁是一个专家与熊猫数据框架可以帮助我这个。谢谢你!

使用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)

最新更新