Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:转向柱';将值和现有列合并为多列_Python_Pandas_Multiple Columns - Fatal编程技术网

Python 熊猫:转向柱';将值和现有列合并为多列

Python 熊猫:转向柱';将值和现有列合并为多列,python,pandas,multiple-columns,Python,Pandas,Multiple Columns,我试图获取一个具有重复值的现有列,并将其转换为自身的标题。然后我想使用原始标题的一部分,这样最后我将有一个多列标题 我基本上是想扭转这种局面: ticker PX_LAST PX_OPEN date 20000103 company1 1234 6543 20000104 company1 2345 7654 20000105 company1 3465 8765 20000106 company1

我试图获取一个具有重复值的现有列,并将其转换为自身的标题。然后我想使用原始标题的一部分,这样最后我将有一个多列标题

我基本上是想扭转这种局面:

            ticker      PX_LAST PX_OPEN 
date
20000103    company1    1234    6543
20000104    company1    2345    7654
20000105    company1    3465    8765
20000106    company1    4567    9876
20000103    company2    1       6
20000104    company2    2       7
20000105    company2    3       8
20000106    company2    4       9
为此:

ticker      company1                company2
field       PX_LAST     PX_OPEN     PX_LAST     PX_OPEN
date
20000103    1234        6543        1           6
20000104    2345        7654        2           7
20000105    3465        8765        3           8
20000106    4567        9876        4           9
我一直在玩
DataFrame.pivot
DataFrame.pivot\u table
,但我想不出来

我也尝试过迭代
DataFrame.iterrows()
,但我认为它太慢了,而且与前面提到的方法相比,它的可读性非常差。

试试这个:

>>> (df.reset_index()
      .set_index(['date','ticker'])
      .unstack().swaplevel(axis='columns')
      )

ticker   company1 company2 company1 company2
          PX_LAST  PX_LAST  PX_OPEN  PX_OPEN
date                                        
20000103     1234        1     6543        6
20000104     2345        2     7654        7
20000105     3465        3     8765        8
20000106     4567        4     9876        9
编辑:


谢谢,它正在工作,但我稍微更改了问题(删除了
ticker
行的重复内容)。
>>> (df.reset_index()
      .set_index(['date','ticker'])
      .unstack().swaplevel(axis='columns')
      .sort_index(axis=1)
     )

ticker   company1         company2        
          PX_LAST PX_OPEN  PX_LAST PX_OPEN
date                                      
20000103     1234    6543        1       6
20000104     2345    7654        2       7
20000105     3465    8765        3       8
20000106     4567    9876        4       9