我有一个具有以下结构的数据框:
First_Name Last_Name Group_Membership
Joe Francis A
Jane Davis B
Mary Smith A,B,C
Ian Brown A
我需要将单元格 Group_Membership 中的值转换为列并获取如下所示的数据框:
First_Name Last_Name A B C
Joe Francis Yes No No
Jane Davis No Yes No
Mary Smith Yes Yes Yes
Ian Brown Yes No No
我设法将 Group_Membership 列中的值转换为列表,然后“分解”它,但随后我应该以某种方式转置它
df.['Group_Membership'] = df.['Group_Membership'].str.split(',')
df.explode('Group_Membership')
现在我应该以某种方式旋转它。另外,我不确定这是最好的方法......
我们将非常感谢您的帮助!
最佳答案
首先创建一个辅助 DataFrame(A、B 和 C 列):
df2 = df.Group_Membership.str.split(',').explode().to_frame().assign(val='Yes')\
.pivot(columns='Group_Membership').droplevel(0, axis=1).fillna('No')
(打印出来查看内容)。
然后创建结果:
result = df[['First_Name', 'Last_Name']].join(df2)
结果是:
First_Name Last_Name A B C
0 Joe Francis Yes No No
1 Jane Davis No Yes No
2 Mary Smith Yes Yes Yes
3 Ian Brown Yes No No
关于python - 将单元格中的多个值转换为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65010273/