python - 从一列列表到多列

标签 python pandas

我有一列格式如下:

American express,Visa,Master Card,Diners
American express,Visa,Master Card,Bancomat
all
Visa,Master Card,Diners,Banco

如果在列表中找到给定的卡片,我想为每个元素创建不同的列,其中包含 1 或 0。

预期结果应该是这样的:

Visa    American Express    Master Card   Diners    Bancomat
1       1                   1             1         0
1       1                   1             0         1
1       1                   1             1         1
1       0                   1             1         0

pandas 有办法做到这一点吗?

最佳答案

使用Series.str.get_dummies通过 DataFrame.add 处理 all 列与 DataFrame.pop对于提取列:

print (df)
                                          col
0    American express,Visa,Master Card,Diners
1  American express,Visa,Master Card,Bancomat
2                                         all
3            Visa,Master Card,Diners,Bancomat

df = df['col'].str.get_dummies(',')

df = df.add(df.pop('all'), axis=0)
#alternative
#df += df.pop('all')[:, None]
print (df)
   American express  Bancomat  Diners  Master Card  Visa
0                 1         0       1            1     1
1                 1         1       0            1     1
2                 1         1       1            1     1
3                 0         1       1            1     1

关于python - 从一列列表到多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58541876/

相关文章:

python - Pandas - 将列转换为 int 并强制 NaN

python - 无法从 h5 文件重新加载经过训练的 resnet50 模型

python - 从 Numpy 数组中删除列的有效方法?

python - 删除字典中的重复项

python - pandas - 有没有办法根据条件将值从一个数据框列复制到另一个数据框列?

python 3、pandas 和创建新列失败并出现 keyerror

python - os.system 无法调用文件名中带有左括号 '(' 的文件

python - Django RegexField 仅限字母和数字

python - 忽略 0 的行的 Pandas 平均值

python - 如何将 pandas/python 中的前 2 列与 n/a 值结合起来