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]