我在Pandas DataFrame中有一个字符串列,其中有一些逗号分隔的标签。
例如:
Row 1: "A, G, Z"
Row 2: "H"
Row 3: "A, H"我需要为每个标签创建一个名为A,B,C,D…的列。如果存在列名为(A,B,...)的标签,则在相应的行/列中具有1在标签字符串中,否则设置添加的列值为0。
因此,在上面的示例中,我需要添加以下列/值:
A, G, H, Z
Row 1: 1, 1, 0, 1
Row 2: 0, 0, 1, 0
Row 3: 1, 0, 1, 0我考虑过对行进行迭代,但在一些地方读到它会影响性能。
我想知道你是否可以提供一些想法,如何在不对行进行迭代的情况下做到这一点,或者以性能优化的方式利用迭代……
发布于 2019-05-19 06:23:30
是的,pandas.Series.str确实为此提供了一种方法:
解决方案
# replace `col` with your column name
dummies = df['col'].str.get_dummies(sep=',')
# assign generated columns to data frame
df[dummies.columns] = dummies可选
我注意到在给定的示例中可能会出现空格问题,以下是删除空格然后生成列的解决方案:
# replace `col` with your column name
df['col'].str.replace(' ', '').str.get_dummies(sep=',')链接:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.get_dummies.html
https://stackoverflow.com/questions/56202923
复制相似问题