gpt4 book ai didi

python - 将逗号分隔字符串的 pandas DataFrame 列转换为单热编码

转载 作者:太空狗 更新时间:2023-10-30 01:50:09 26 4
gpt4 key购买 nike

我有一个由一列组成的大型数据框(“数据”)。列中的每一行由一个字符串组成,每个字符串由逗号分隔的类别组成。我希望对这些数据进行一次热编码。

例如,

data = {"mesh": ["A, B, C", "C,B", ""]}

从这里我想得到一个包含以下内容的数据框:

index      A       B.     C
0 1 1 1
1 0 1 1
2 0 0 0

我该怎么做?

最佳答案

请注意,您不是在处理 OHE。

str.split + 堆栈 + get_dummies + sum

df = pd.DataFrame(data)
df

mesh
0 A, B, C
1 C,B
2

(df.mesh.str.split('\s*,\s*', expand=True)
.stack()
.str.get_dummies()
.sum(level=0))
df

A B C
0 1 1 1
1 0 1 1
2 0 0 0

应用 + value_counts

(df.mesh.str.split(r'\s*,\s*', expand=True)
.apply(pd.Series.value_counts, 1)
.iloc[:, 1:]
.fillna(0, downcast='infer'))

A B C
0 1 1 1
1 0 1 1
2 0 0 0

pd.crosstab

x = df.mesh.str.split('\s*,\s*', expand=True).stack()
pd.crosstab(x.index.get_level_values(0), x.values).iloc[:, 1:]
df

col_0 A B C
row_0
0 1 1 1
1 0 1 1
2 0 0 0

关于python - 将逗号分隔字符串的 pandas DataFrame 列转换为单热编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46864816/

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