【发布时间】:2015-09-25 16:51:58
【问题描述】:
以下是我的具有两级索引的数据框。我希望“仅”将外部索引转置为列。我想要的输出将是 2X2 数据帧,而不是现在的 4X1 数据帧。有人可以帮忙吗?
0
0 0 232
1 3453
1 0 443
1 3241
【问题讨论】:
标签: python pandas dataframe hierarchical-data transpose
以下是我的具有两级索引的数据框。我希望“仅”将外部索引转置为列。我想要的输出将是 2X2 数据帧,而不是现在的 4X1 数据帧。有人可以帮忙吗?
0
0 0 232
1 3453
1 0 443
1 3241
【问题讨论】:
标签: python pandas dataframe hierarchical-data transpose
鉴于您有多重索引,您可以在级别 0 上使用 unstack()。
import pandas as pd
import numpy as np
index = pd.MultiIndex.from_tuples([(0,0),(0,1),(1,0),(1,1)])
df = pd.DataFrame([[1],[2],[3],[4]] , index=index, columns=[0])
print df.unstack(level=[0])
0
0 1
0 1 3
1 2 4
【讨论】:
一种方法是重置索引,然后在索引的level_1 上旋转表索引,并使用level_0 作为列和0 作为值。示例 -
df.reset_index().pivot(index='level_1',columns='level_0',values=0)
演示 -
In [66]: index = pd.MultiIndex.from_tuples([(0,0),(0,1),(1,0),(1,1)])
In [67]: df = pd.DataFrame([[1],[2],[3],[4]] , index=index, columns=[0])
In [68]: df
Out[68]:
0
0 0 1
1 2
1 0 3
1 4
In [69]: df.reset_index().pivot(index='level_1',columns='level_0',values=0)
Out[69]:
level_0 0 1
level_1
0 1 3
1 2 4
稍后,如果您不想要level_*,可以将index 和columns 的.name 属性设置为空字符串或任何您想要的值。
【讨论】: