虚拟变量python的数据操作

2024-04-24 14:30:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

这里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多列需要分组未成年人。有吗我们将不胜感激。你知道吗


Tags: 数据项目event示例date事件minor小调
2条回答

使用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

如果只需要01输出,我认为您需要^{}

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['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  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

相关问题 更多 >