创建一个;选择“;变量,该变量通过指定列名-Pandas来指示所做的选择

创建一个;选择“;变量,该变量通过指定列名-Pandas来指示所做的选择,pandas,Pandas,我想创建一个“choice”变量,指示在一些备选方案中进行了哪些选择。 本例中的备选方案为:123456789。 如果没有选择,则指定0值,如果有多选,则指定1值, 否则,指定选项名称(采用列名) 数据说明: ID Date X 123 456 789 A 07/16/2019 .. 1 0 0 A 07/19/2019 .. 0 0 0 A 07/20/2019 .. 0 1 0 A 07/22/2019 .. 1

我想创建一个“choice”变量,指示在一些备选方案中进行了哪些选择。 本例中的备选方案为:123456789。 如果没有选择,则指定0值,如果有多选,则指定1值, 否则,指定选项名称(采用列名)

数据说明:

ID  Date        X   123 456 789
A   07/16/2019  ..  1   0   0
A   07/19/2019  ..  0   0   0
A   07/20/2019  ..  0   1   0
A   07/22/2019  ..  1   0   0
A   07/23/2019  ..  0   1   1
B   07/27/2019  ..  0   0   1
B   07/28/2019  ..  0   0   0
B   07/30/2019  ..  0   0   0
预期结果:

ID  Date        X   123 456 789 choice
A   07/16/2019  ..  1   0   0   123
A   07/19/2019  ..  0   0   0   0
A   07/20/2019  ..  0   1   0   456
A   07/22/2019  ..  1   0   0   123
A   07/23/2019  ..  0   1   1   1
B   07/27/2019  ..  0   0   1   789
B   07/28/2019  ..  0   0   0   0
B   07/30/2019  ..  0   0   0   0
用于:

用于:


这里提供了一种方法,通过选择,使用执行此任务的自定义函数,以及:

结果
df
为:

  ID        Date   X  123  456  789 choice
0  A  07/16/2019  ..    1    0    0    123
1  A  07/19/2019  ..    0    0    0      0
2  A  07/20/2019  ..    0    1    0    456
3  A  07/22/2019  ..    1    0    0    123
4  A  07/23/2019  ..    0    1    1      1
5  B  07/27/2019  ..    0    0    1    789
6  B  07/28/2019  ..    0    0    0      0
7  B  07/30/2019  ..    0    0    0      0

请注意,
'choice'
列的
dtype
object
而不是
int
,因为列名是字符串(即使您有整数)。

这里有一种通过选择来实现的方法,使用一个执行此任务的自定义函数,并且:

结果
df
为:

  ID        Date   X  123  456  789 choice
0  A  07/16/2019  ..    1    0    0    123
1  A  07/19/2019  ..    0    0    0      0
2  A  07/20/2019  ..    0    1    0    456
3  A  07/22/2019  ..    1    0    0    123
4  A  07/23/2019  ..    0    1    1      1
5  B  07/27/2019  ..    0    0    1    789
6  B  07/28/2019  ..    0    0    0      0
7  B  07/30/2019  ..    0    0    0      0
请注意,
'choice'
列的
dtype
object
而不是
int
,因为列名是字符串(即使有整数)

  ID        Date   X  123  456  789 choice
0  A  07/16/2019  ..    1    0    0    123
1  A  07/19/2019  ..    0    0    0      0
2  A  07/20/2019  ..    0    1    0    456
3  A  07/22/2019  ..    1    0    0    123
4  A  07/23/2019  ..    0    1    1      1
5  B  07/27/2019  ..    0    0    1    789
6  B  07/28/2019  ..    0    0    0      0
7  B  07/30/2019  ..    0    0    0      0