单列每行有多个值,用逗号分隔。如何为每一个创建一个单独的列?

数据挖掘 Python 数据集 熊猫 数据清理 预处理
2021-09-29 00:07:18

正如您在下面看到的,我有一列名为code,每行有多个值,用逗号分隔。如何为这些代码中的每一个创建一个列并将它们全部设为二进制值?

code6254code5854....,所有这些列将是二进制值0还是1取决于该行是否具有代码?提前致谢 :)

在此处输入图像描述

2个回答

如果您可以提供一些代码来让我们至少重现您的 DataFrame 的一部分,那就更好了,例如:

import pandas as pd
df = pd.DataFrame({'code': ['6254', '5854, 5676, 7265, 6051', '5815']})

一开始,您的数据框如下所示:

                     code
0                    6254
1  5854, 5676, 7265, 6051
2                    5815

一个可能的解决方案是这样做:

df['code'].str.get_dummies(sep=', ').add_prefix('code')

这给了你这个:

   code5676  code5815  code5854  code6051  code6254  code7265
0          0          0          0          0          1          0
1          1          0          1          1          0          1
2          0          1          0          0          0          0
ind=df2.columns.tolist().index('Ticker')

x=0

df3=pd.DataFrame(columns=df2.columns.tolist())

for i in df2.values.tolist():

    l1=i[ind].split(';')
    for j in l1:
        x=x+1
        i1=i[:ind]
        i1.extend([j])
        df3.loc[str(x)]=i1
df3