如何将熊猫列移至第一列的最后一行?

问题描述

我正在尝试操纵我的熊猫数据框,以便可以:

  1. 创建一个标记为“股票行情指示器”的新列。
  2. 将“ AAL”列移至“ A”列
  3. 将“ A”列中的所有元素都标记为新的“股票行情”列中的A,并将AAL标记为新移动的“ AAL”列中的
  4. 将“ A”列重命名为“ adj Close”
  5. 将“ AAL”行的索引值复制到“ Adj Close”列的左侧。

实际数据帧输出

        Adj Close   Adj Close
        A           AAL
Date            
1/11/19 80.22673035 28.54166412
1/12/19 84.7361908  28.57440376
1/1/20  82.17785645 26.74117851

所需的数据帧输出

        Ticker      Adj Close
Date            
1/11/19    A        80.22673035
1/12/19    A        84.7361908
1/1/20     A        82.17785645     
1/11/19   AAL       28.54166412
1/12/19   AAL       28.57440376
1/1/20    AAL       26.74117851

这有可能吗,如果可以的话,做到这一点的最佳方法是什么? 我已经尝试过使用groupby函数和pivot了,但是还没有使用它。我是python的新手,所以我可能做错了事。

感谢您的帮助并保持安全:)

EDIT(请求的输出print(df.to_dict())

{('Adj Close','A'): 
{Timestamp('2019-10-01 00:00:00'): nan,Timestamp('2019-11-01 00:00:00'): 80.22673034667969,Timestamp('2019-12-01 00:00:00'): 84.73619079589844,Timestamp('2020-01-01 00:00:00'): 82.1778564453125,Timestamp('2020-02-01 00:00:00'): 76.71327209472656,Timestamp('2020-03-01 00:00:00'): 71.28850555419922,Timestamp('2020-04-01 00:00:00'): 76.4993667602539,Timestamp('2020-05-01 00:00:00'): 87.95530700683594,Timestamp('2020-06-01 00:00:00'): 88.18482971191406,Timestamp('2020-07-01 00:00:00'): 96.33000183105469,Timestamp('2020-08-01 00:00:00'): 100.41999816894531,Timestamp('2020-09-01 00:00:00'): 100.94000244140625,Timestamp('2020-10-01 00:00:00'): 100.01000213623047,Timestamp('2020-10-02 00:00:00'): 100.01000213623047},('Adj Close','AAL'): 
{Timestamp('2019-10-01 00:00:00'): nan,Timestamp('2019-11-01 00:00:00'): 28.541664123535156,Timestamp('2019-12-01 00:00:00'): 28.574403762817383,Timestamp('2020-01-01 00:00:00'): 26.741178512573242,Timestamp('2020-02-01 00:00:00'): 18.9798583984375,Timestamp('2020-03-01 00:00:00'): 12.1899995803833,Timestamp('2020-04-01 00:00:00'): 12.010000228881836,Timestamp('2020-05-01 00:00:00'): 10.5,Timestamp('2020-06-01 00:00:00'): 13.069999694824219,Timestamp('2020-07-01 00:00:00'): 11.119999885559082,Timestamp('2020-08-01 00:00:00'): 13.050000190734863,Timestamp('2020-09-01 00:00:00'): 12.289999961853027,Timestamp('2020-10-01 00:00:00'): 13.0,Timestamp('2020-10-02 00:00:00'): 13.0}}

解决方法

如果您的列标题是multiIndex,请尝试以下操作:

df.stack(1).reset_index().rename(columns={'level_1': 'Ticker'})

输出:

      Date Ticker  Adj Close
0  1/11/19      A  80.226730
1  1/11/19    AAL  28.541664
2  1/12/19      A  84.736191
3  1/12/19    AAL  28.574404
4   1/1/20      A  82.177856
5   1/1/20    AAL  26.741179