gpt4 book ai didi

python - Pandas:将分类列分解为多列

转载 作者:行者123 更新时间:2023-12-02 11:59:33 27 4
gpt4 key购买 nike

想象一下以下格式的 Pandas 数据框:

id  type  v1  v2
1 A 6 9
1 B 4 2
2 A 3 7
2 B 3 6

我想将此数据框转换为以下格式:

id  A_v1  A_v2  B_v1  B_v2
1 6 9 4 2
2 3 7 3 6

有没有一种优雅的方法可以做到这一点?

最佳答案

您可以使用set_indextypeid列移动到索引中,然后unstacktype索引级别移动到列索引中。您不必担心 v 值 - 其中索引决定值的排列。

结果是一个带有 a MultiIndex 的 DataFrame对于列索引:

In [181]: df.set_index(['type', 'id']).unstack(['type'])
Out[181]:
v1 v2
type A B A B
id
1 6 4 9 2
2 3 3 7 6

通常,多索引优于扁平列索引。它为您提供了更好的方法来根据 typev 值选择或操作数据。

如果您希望对列重新排序以与所需输出中显示的顺序完全匹配,您可以使用df.reindex:

df = df.reindex(columns=sorted(df.columns, key=lambda x: x[::-1]))

产量

     v1 v2 v1 v2
type A A B B
id
1 6 9 4 2
2 3 7 3 6

如果您希望将列索引展平为单个级别,则

df.columns = ['{}_{}'.format(t, v) for v,t in df.columns]

产量

    A_v1  A_v2  B_v1  B_v2
id
1 6 9 4 2
2 3 7 3 6

关于python - Pandas:将分类列分解为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30990389/

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