python中虚拟变量的数据操作

python中虚拟变量的数据操作,python,pandas,Python,Pandas,我有一个如下的数据框(示例如下所示) 这里A表示仅发生了事件A,A | B表示A和B都发生在特定的一天。现在,我已经为上述事件形成了虚拟变量。随后,我想将B、C和D组合成一个名为“小调”的项目。因此,我的输出如下所示: Date event A Minor 2015-10-01 A 1 0 2015-10-02 A|B 1 1 2015-11-01 C 0 1 2015-10-07 D 0 1 正如您在第二行看到的,Minor

我有一个如下的数据框(示例如下所示)

这里A表示仅发生了事件A,A | B表示A和B都发生在特定的一天。现在,我已经为上述事件形成了虚拟变量。随后,我想将B、C和D组合成一个名为“小调”的项目。因此,我的输出如下所示:

Date       event  A  Minor
2015-10-01  A     1   0
2015-10-02  A|B   1   1
2015-11-01  C     0   1
2015-10-07  D     0   1
正如您在第二行看到的,Minor等于1,因为B也发生在那天。我有点困惑如何处理这个问题。实际上,我有20多个栏目需要分组为次要栏目。如果您只需要
0
1
输出,我们将不胜感激。

我认为您需要:

cols = ['B','C','D']

df['Minor'] = df[cols].max(axis=1)
df = df.drop(cols, axis=1)
print (df)
         Date event  A  Minor
0  2015-10-01     A  1      0
1  2015-10-02   A|B  1      1
2  2015-11-01     C  0      1
3  2015-10-07     D  0      1
或者,如果需要求和值,请使用:

更改后的
df差异

print (df)
         Date event  A  B  C  D
0  2015-10-01     A  1  0  0  0
1  2015-10-02   A|B  1  1  0  0
2  2015-11-01   C|D  0  0  1  1
3  2015-10-07     D  0  0  0  1

cols = ['B','C','D']

df['Minor'] = df[cols].sum(axis=1)
df = df.drop(cols, axis=1)
print (df)
         Date event  A  Minor
0  2015-10-01     A  1      0
1  2015-10-02   A|B  1      1
2  2015-11-01   C|D  0      2
3  2015-10-07     D  0      1

df['Minor'] = df[cols].max(axis=1)
df = df.drop(cols, axis=1)
print (df)
         Date event  A  Minor
0  2015-10-01     A  1      0
1  2015-10-02   A|B  1      1
2  2015-11-01   C|D  0      1
3  2015-10-07     D  0      1

使用
assign
+
drop

cols = list('BCD')
df.assign(Minor=df[cols].sum(1)).drop(cols, 1)

        Date event  A  Minor
0 2015-10-01     A  1      0
1 2015-10-02   A|B  1      1
2 2015-11-01     C  0      1
3 2015-10-07     D  0      1
df[['B','C','D']].和(轴=1)
print (df)
         Date event  A  B  C  D
0  2015-10-01     A  1  0  0  0
1  2015-10-02   A|B  1  1  0  0
2  2015-11-01   C|D  0  0  1  1
3  2015-10-07     D  0  0  0  1

cols = ['B','C','D']

df['Minor'] = df[cols].sum(axis=1)
df = df.drop(cols, axis=1)
print (df)
         Date event  A  Minor
0  2015-10-01     A  1      0
1  2015-10-02   A|B  1      1
2  2015-11-01   C|D  0      2
3  2015-10-07     D  0      1

df['Minor'] = df[cols].max(axis=1)
df = df.drop(cols, axis=1)
print (df)
         Date event  A  Minor
0  2015-10-01     A  1      0
1  2015-10-02   A|B  1      1
2  2015-11-01   C|D  0      1
3  2015-10-07     D  0      1
cols = list('BCD')
df.assign(Minor=df[cols].sum(1)).drop(cols, 1)

        Date event  A  Minor
0 2015-10-01     A  1      0
1 2015-10-02   A|B  1      1
2 2015-11-01     C  0      1
3 2015-10-07     D  0      1