如何仅基于外部索引转置多级 pandas 数据框
how to transpose multiple level pandas dataframe based only on outer index
下面是我的具有两级索引的数据框。我希望 'only' 将外部索引转置为列。我想要的输出是 2X2 数据帧,而不是现在的 4X1 数据帧。你们中的任何人都可以帮忙吗?
0
0 0 232
1 3453
1 0 443
1 3241
一种方法是重置索引,然后在索引的 level_1
上旋转 table 索引,并使用 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
稍后,如果您愿意,可以将 index
和 columns
的 .name
属性设置为空字符串或任何您想要的属性,如果您不这样做的话想要那里的 level_*
。
鉴于您拥有多索引,您可以在级别 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
下面是我的具有两级索引的数据框。我希望 'only' 将外部索引转置为列。我想要的输出是 2X2 数据帧,而不是现在的 4X1 数据帧。你们中的任何人都可以帮忙吗?
0
0 0 232
1 3453
1 0 443
1 3241
一种方法是重置索引,然后在索引的 level_1
上旋转 table 索引,并使用 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
稍后,如果您愿意,可以将 index
和 columns
的 .name
属性设置为空字符串或任何您想要的属性,如果您不这样做的话想要那里的 level_*
。
鉴于您拥有多索引,您可以在级别 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