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