Python Dataframe set_index生成重复的索引值,而不是进行分层分组

Python Dataframe set_index生成重复的索引值,而不是进行分层分组,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个看起来像这样的数据框(未显示索引) 我想生成一个如下所示的数据帧: Time Letter TypeX TypeY 0 A 10 20 0 B 20 1 A 30 1 B 40 3 C 50 为此,我决定首先创建一个包含多个索引、时间、字母的表,然后取消

我有一个看起来像这样的数据框(未显示索引)

我想生成一个如下所示的数据帧:

Time    Letter   TypeX    TypeY
  0        A      10       20
  0        B               20
  1        A               30
  1        B      40       
  3        C      50         
为此,我决定首先创建一个包含多个索引、时间、字母的表,然后取消最后一个索引类型的堆栈

假设我的原始数据帧命名为my_table:

my_table.reset_index().设置_index(['Time',Letter']),而不是将其分组,以便在每个时间索引下,Letter都有类型X和类型Y,它们似乎已被排序(添加几个条目以说明一点):

为什么会发生这种情况?我期待这样的结果:

Time   Letter   Type    Value
    0    A       x       10
                 y       30
         B       y       20
         H       x       15
                 y       10
         D       x       25
         G       x       33
    1    B       x       40
         G       x       10
    3    C       x       50
当我将类型设置为其中一个索引时,也会发生相同的行为,它只是作为索引变为粗体


如何使用“时间”和“字母”成功地对列进行分组,以使X和Y与这些列匹配,从而成功地使用“取消堆栈”?

您还需要将“类型”设置为索引

df.set_index(['Time','Letter','Type']).Value.unstack(fill_value='').reset_index()
Out[178]: 
Type  Time Letter   x   y
0        0      A  10    
1        0      B      20
2        1      A      30
3        1      B  40    
4        3      C  50    
Time   Letter   Type    Value
    0    A       x       10
                 y       30
         B       y       20
         H       x       15
                 y       10
         D       x       25
         G       x       33
    1    B       x       40
         G       x       10
    3    C       x       50
df.set_index(['Time','Letter','Type']).Value.unstack(fill_value='').reset_index()
Out[178]: 
Type  Time Letter   x   y
0        0      A  10    
1        0      B      20
2        1      A      30
3        1      B  40    
4        3      C  50