在复杂列上使用 pandas 映射

use pandas map on a complex column

这是我的 csv 的样子

time cause
23 a / b / c
42 c / d / a / b
12 a / d / e
98 c / b / e / d

这是我想要实现的输出

time a b c d e
23 1 1 1 0 0
42 1 1 1 1 0
12 1 1 0 0 1
98 0 1 1 1 1

我的真实数据要大得多,但这个例子应该能帮我找到我要找的东西。我不知道如何使用 map 函数检查每个单元格中的多个可能值。

可以使用str.get_dummiesjoin回到原来的dataframe:

df[['time']].join(df['cause'].str.get_dummies(sep=' / '))

或使用pop修改原始数据帧:

df = df.join(df.pop('cause').str.get_dummies(sep=' / '))

输出:

   time  a  b  c  d  e
0    23  1  1  1  0  0
1    42  1  1  1  1  0
2    12  1  0  0  1  1
3    98  0  1  1  1  1