我有一列格式如下:
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/