gpt4 book ai didi

python - Dataframe set_index 产生重复的索引值而不是进行分层分组

转载 作者:行者123 更新时间:2023-12-01 01:53:36 26 4
gpt4 key购买 nike

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

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

为此,我决定首先创建一个具有多个索引、时间、字母的表,然后取消堆叠最后一个索引类型。

假设我的原始数据框名为 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

当我将 Type 设置为索引之一时,会发生相同的行为,它只是作为索引变为粗体。

如何使用 Time 和 Letter 成功对列进行分组,以使 X 和 Y 与这些列匹配,以便我可以成功使用 unstack?

最佳答案

您还需要将 type 设置为索引

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

关于python - Dataframe set_index 产生重复的索引值而不是进行分层分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50473878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com