我有一个看起来像这样的数据框(索引未显示)
Time Letter Type Value
0 A x 10
0 B y 20
1 A y 30
1 B x 40
3 C x 50
我想生成一个如下所示的数据框:
Time Letter TypeX TypeY
0 A 10 20
0 B 20
1 A 30
1 B 40
3 C 50
为此,我决定首先创建一个具有多个索引的表,Time,Letter,然后将最后一个索引Type取消堆叠。
我们说我的原始数据框名为my_table:
my_table.reset_index()。set_index([' Time',' Letter'])而不是将其分组,以便在每次索引时,字母都有两个类型X和输入Y,它们似乎已被排序(添加一些条目来证明一个点):
Time(i) Letter(i) Type Value
0 A x 10
D x 25
H x 15
G x 33
1 B x 40
G x 10
3 C x 50
0 B y 20
H y 10
1 A y 30
为什么会这样?我期待这样的结果:
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
当我创建索引类型之一时会发生相同的行为,它只是变为粗体作为索引。
如何使用Time和Letter成功对列进行分组,以使X和Y与这些列匹配,以便我可以成功使用unstack?
答案 0 :(得分:1)
您还需要将类型设置为索引
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