python - 将多索引键转换为列
问题描述
我试图让索引的键成为一列一段时间。我已经尝试过df.to_frame()
其他变体但没有成功。
为了重现性:
nasdaq_list = ["CBAK", "CBAN", "CBAY", "CBDE", "CBF", "CBFV", "CBIN", "CBLI", "CBMG", "CBMX", "CBNJ", "CBNK", "CBOE", "CBPO", "CBRL", "CBRX", "CBSH", "CBSHP", "CBST", "CBSTZ", "CCBG", "CCCL", "CCCR", "CCIH", "CCLP", "CCMP", "CCNE", "CCOI", "CCRN", "CCUR", "CCXI", "CDC", "CDK", "CDNA", "CDNS", "CDTI", "CDW", "CDXS", "CDZI", "CECE", "CECO", "CELG", "CELGZ", "CEMI", "CEMP", "CENT", "CENTA", "CENX", "CERE", "CERN", "CERS", "CERU", "CETV", "CEVA", "CFA", "CFBK", "CFFI", "CFFN", "CFGE", "CFNB", "CFNL", "CFO", "CFRX", "CFRXW", "CFRXZ", "CG", "CGEN", "CGIX", "CGNX", "CGO", "CHCI", "CHCO", "CHDN", "CHEF", "CHEV", "CHFC", "CHFN", "CHI", "CHKE", "CHKP", "CHLN", "CHMG", "CHNR", "CHOP", "CHRS", "CHRW", "CHSCM", "CHSCN", "CHSCO", "CHSCP", "CHTR", "CHUY", "CHW", "CHXF", "CHY", "CHYR", "CIDM", "CIFC", "CIMT", "CINF"]
start = date(2017, 10, 1)
end = date(2020, 6, 25)
import yfinance as yf
df = yf.download(nasdaq_list, start, end)
df.tail()
Out[84]:
Adj Close Volume
CBAK CBAN CBAY CBDE CBF ... CHYR CIDM CIFC CIMT CINF
Date ...
2020-06-18 NaN 11.76 3.66 NaN NaN ... NaN 1518300 NaN NaN 1166600
2020-06-19 NaN 11.85 3.94 NaN NaN ... NaN 4842900 NaN NaN 6750100
2020-06-22 NaN 12.29 4.13 NaN NaN ... NaN 2542600 NaN NaN 1774600
2020-06-23 NaN 12.62 3.91 NaN NaN ... NaN 3552000 NaN NaN 1342100
2020-06-24 NaN 11.84 3.74 NaN NaN ... NaN 3288200 NaN NaN 1531700
[5 rows x 600 columns]
虽然我正在寻找类似的东西:
Date Symbol Adj Close ... Volume
2020-06-18 CBAK NaN 11.76 3.66 NaN NaN ... NaN 1518300 NaN NaN 1166600
2020-06-18 CBAN NaN 11.85 3.94 NaN NaN ... NaN 4842900 NaN NaN 6750100
2020-06-18 CBAY NaN 12.29 4.13 NaN NaN ... NaN 2542600 NaN NaN 1774600
2020-06-18 CBDE NaN 12.62 3.91 NaN NaN ... NaN 3552000 NaN NaN 1342100
2020-06-18 CBF NaN 11.84 3.74 NaN NaN ... NaN 3288200 NaN NaN 1531700
[5 rows x 600 columns]
请注意,日期保持不变,因为所有这些符号都代表第一个日期。
任何帮助将不胜感激。
解决方案
只需要先改变你的索引,然后堆叠。
df.tail().reorder_levels([1,0], 1).stack(0).reset_index()
输出
Date level_1 Adj Close Close High Low Open Volume
0 2020-06-18 CBAN 11.760000 11.760000 12.530000 11.170000 12.530000 25000.0
1 2020-06-18 CBAY 3.660000 3.660000 3.770000 3.585000 3.770000 985000.0
2 2020-06-18 CBFV 25.500000 25.500000 26.280001 24.889999 25.410000 7000.0
3 2020-06-18 CBLI 1.740000 1.740000 1.750000 1.590000 1.640000 485700.0
推荐阅读
- linux - 从 linux 中的另一个文件中删除包含多个字符串模式的文本文件中的行
- ios - 如何确保在文本字段中仅选择选择器数据
- javascript - 如何在Angular的另一个函数中调用一个函数
- javascript - 我在 redux 上写标签时犯了哪些错误?我需要在我的代码中更改什么?
- php - 当在 Laravel 的新模型上调用 save() 时,Phaza Point 保存在其他属性上
- sql - 获取从一对多关系火鸟加入的最后一条记录
- xcode - 为什么 Xcode 自动补全这么慢?
- unity3d - Unity GoogleCard Board 渲染单眼而不是 2 眼
- flutter - Flutter DropdownButtonFormField 不显示在行中
- c# - 如何从场景视图中的鼠标位置进行光线投射?