我有一个数据框:

user_id    product_name
0001       a
0001       b
0001       c
0002       b
0003       a
0003       c
0003       d

我希望 product_name 列转换为:
user_id    A    B    C    D
0001       a    b    c    NaN
0002       NaN  b    NaN  NaN
0003       a    NaN  c    d

最佳答案

首先,我们将创建一个重复的 product_name 列,将其命名为 product_name_extra 我们稍后将使用此列

df['product_name_extra'] = df.product_name
Out[223]:
user_id      product_name   product_name_extra
1                  a                a
1                  b                b
1                  c                c
2                  b                b
3                  a                a
3                  c                c
3                  d                d

然后旋转编辑后的数据框,如果您想获得有关旋转的更多信息,请检查此 pivot
df_pivot = df.pivot(index='user_id' , columns='product_name' , values='product_name_extra')
Out[222]:
product_name    a   b   c   d
user_id
1               a   b   c   NaN
2               NaN b   NaN NaN
3               a   NaN c   d

然后最后重命名您的列
df_pivot.rename(columns=str.upper)
Out[225]:
product_name    A   B   C   D
user_id
1               a   b   c   NaN
2               NaN b   NaN NaN
3               a   NaN c   d

关于pandas - 如何在 Pandas 中将列转换为行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32582047/

10-11 07:15