将单元格中的多个值转换为列

9 浏览
0 Comments

将单元格中的多个值转换为列

我有一个具有以下结构的数据框:

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    是   否   否
Jane        Davis      否   是   否
Mary        Smith      是   是   是
Ian         Brown      是   否   否

我设法将列Group_Membership中的值转换为列表,然后对其进行“展开”,但然后我应该以某种方式进行转置

df.['Group_Membership'] = df.['Group_Membership'].str.split(',')
df.explode('Group_Membership')

现在我应该进行透视。而且,我不确定这是否是最佳方法...

非常感谢您的帮助!

0
0 Comments

问题的原因:在给定的数据中,有一个名为"Group_Membership"的列,其中的值是用逗号分隔的多个值。需要将这些多个值转换成列,并替换为"Yes"和"No"。

解决方法:可以使用pandas库中的get_dummies()函数来实现。首先使用get_dummies()函数将"Group_Membership"列的多个值转换成列,并将1替换为"Yes",0替换为"No"。然后将转换后的列与原数据框连接起来,得到转换后的数据框。

以下是具体的解决方法:

df1 = df.Group_Membership.str.get_dummies(',').replace({1:'Yes',0:'No'})
df2 = df.join(df1)
print(df2)

输出结果如下:

  First_Name Last_Name Group_Membership    A    B    C
0        Joe   Francis                A  Yes   No   No
1       Jane     Davis                B   No  Yes   No
2       Mary     Smith            A,B,C  Yes  Yes  Yes
3        Ian     Brown                A  Yes   No   No

可以选择在后续步骤中删除"Group_Membership"列,或者将上述过程简化为以下代码:

df1 = df.Group_Membership.str.get_dummies(',').replace({1:'Yes',0:'No'})
df2 = df[['First_Name','Last_Name']].join(df1)
print(df2)

或者将所有步骤合并成一行代码:

df = df[['First_Name','Last_Name']].join(df.Group_Membership.str.get_dummies(',').replace({1:'Yes',0:'No'}))
print(df)

最终输出结果如下:

  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

通过以上的方法,我们成功地将"Group_Membership"列的多个值转换成了单独的列,并将其替换为"Yes"和"No"。这样可以更方便地进行数据分析和处理。

0
0 Comments

多个值在一个单元格中的情况是指在一个单元格中存在多个值,这在数据处理中经常遇到。本文讨论了如何将多个值从单元格中拆分成多列,并给出了解决方法。

在给出解决方法之前,首先创建一个辅助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')

我们可以打印这个辅助DataFrame来查看其内容。

然后,我们创建最终的结果。我们选取原始DataFrame中的'First_Name'和'Last_Name'列,并将辅助DataFrame与其合并,具体操作如下:

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

通过上述操作,我们成功将原始DataFrame中的多个值拆分到了新的列中,从而实现了将多个值在单元格中转化为列的目的。

0