Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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 2.7 将多索引转换为列_Python 2.7_Pandas_Pivot_Multi Index - Fatal编程技术网

Python 2.7 将多索引转换为列

Python 2.7 将多索引转换为列,python-2.7,pandas,pivot,multi-index,Python 2.7,Pandas,Pivot,Multi Index,我定义了一个多索引数据帧,例如: import pandas as pd import numpy as np dates = pd.date_range('20130101',periods=3,freq='5s') dates = dates.append(dates) locations = list('AAABBB') gascode = ['no2','o3','so2']*2 tup = pd.MultiIndex.from_tuples( zip(locations,gasc

我定义了一个多索引数据帧,例如:

import pandas as pd
import numpy as np

dates = pd.date_range('20130101',periods=3,freq='5s')
dates = dates.append(dates)

locations = list('AAABBB')
gascode = ['no2','o3','so2']*2

tup = pd.MultiIndex.from_tuples( zip(locations,gascode,dates), names=['Location','gas','Date'] )

data = pd.DataFrame(data=range(6),index=tup,columns=['val1'])

>>> data

Location gas Date                  val1         
A        no2 2013-01-01 00:00:00     0
         o3  2013-01-01 00:00:05     1
         so2 2013-01-01 00:00:10     2
B        no2 2013-01-01 00:00:00     3
         o3  2013-01-01 00:00:05     4
         so2 2013-01-01 00:00:10     5
仅从位置“A”保留数据:

data = data.xs(key='A',level='Location')
现在,我想根据“气体”索引创建新的列,以获得:

Date                   no2   o3   so2
2013-01-01 00:00:00     0    nan  nan
2013-01-01 00:00:05     nan  1    nan
2013-01-01 00:00:10     nan  nan  2
我试着围绕“日期”索引旋转,将“气体”放在列中,但失败了

data = data.pivot(index=data.index.get_level_values(level='date'),
                  columns=situ.index.get_level_values(level='gas'))
我不知道如何做到这一点;有人能推荐一个替代方案吗

您可以查看结果:

In [11]: data.xs(key='A', level='Location').unstack(0)
Out[11]: 
                     val1         
gas                   no2  o3  so2
Date                              
2013-01-01 00:00:00     0 NaN  NaN
2013-01-01 00:00:05   NaN   1  NaN
2013-01-01 00:00:10   NaN NaN    2

[3 rows x 3 columns]
您可以选择以下结果:

In [11]: data.xs(key='A', level='Location').unstack(0)
Out[11]: 
                     val1         
gas                   no2  o3  so2
Date                              
2013-01-01 00:00:00     0 NaN  NaN
2013-01-01 00:00:05   NaN   1  NaN
2013-01-01 00:00:10   NaN NaN    2

[3 rows x 3 columns]