gpt4 book ai didi

python - 如何使用 get_dummies 从现有列创建新列

转载 作者:行者123 更新时间:2023-11-30 09:16:39 24 4
gpt4 key购买 nike

我有这个数据框:

    column1   column2   column3   column4
0 A A D D
1 B B D D
2 C C B D
3 A D D A

我想将 columns1 - columns4 中的类别作为新列添加到数据框中,并用 1 和 0 填充它,如下所示:

    column1   column2   column3   column4   A     B     C     D
0 A A D D 1 0 0 1
1 B B D D 0 1 0 1
2 C C B D 0 1 1 1
3 A D D A 1 0 0 1

所以我尝试了一些代码:

pd.concat([df, df['column1'].str.get_dummies(sep=',')], axis=1)

我从第 1 列中得到 1 和 0。如何修改我的代码以获得所有 1 和 0条件是:

0 & 0 = 0
0 & 1 = 1
1 & 0 = 1
1 & 1 = 1

我也尝试过:

df1 = df.column1.str.get_dummies(sep=',')
df2 = df.column2.str.get_dummies(sep=',')
df3 = df.column3.str.get_dummies(sep=',')
df4 = df.column4.str.get_dummies(sep=',')
frames = [df1, df2, df3, df4]
result = pd.concat(frames, sort=True)

但我希望这些类别作为新列仅出现一次,并且值 1 应代表所有出现的情况。你能帮我吗:)

最佳答案

get_dummies 方法根据系列的值计算类别的数量,因此需要从提取虚拟变量的位置中提取系列值(在您的情况下为列),以包含您想要的所有类别要获得,换句话说,您必须有一列包含所有 4 列的值并用分隔符连接起来。为了将这些值放在一起,我们使用:

new_col = df[['column1', 'column2', 'column3', 'column4']].apply(lambda x: '|'.join(x), axis=1)

基本上用“|”将所有列值连接到一个字符串中按行分隔符获取该系列:

0    A|A|D|D
1 B|B|D|D
2 C|C|B|D
3 A|D|D|A

现在,我们只需将 get_dummies(sep='|') 方法应用于上面的列,以便在考虑到这些列中存在的所有类别的情况下获取虚拟对象,只需一行代码即 cocoa 以获得如下(我还将它与原始数据集连接以获得您要求的格式):

df = pd.concat([df, df[['column1', 'column2', 'column3', 'column4']]
.apply(lambda x: '|'.join(x), axis=1)
.str
.get_dummies(sep='|')], axis=1)

关于python - 如何使用 get_dummies 从现有列创建新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451491/

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