我有一个包含6列的数据框,
c5
列c3 and c4
代表after c6
之间的最大值,我想添加一列c5
以比较c3 put 0
中的最大值是否来自c4 put 1
如果它来自c1 c2 c3 c4 c5 c6 c7
C875 DOID_3263 1 9.65E-18 1 known 0
C783 DOID_4064 1 4.80E-17 1 unknown 0
C372 DOID_0050084 0.996 0.00429 0.996 unknown 0
C43 DOID_936 0.0457 0.954 0.954 known 1
因此,最后的最终结果将是这样:
.+
有什么帮助吗?
答案 0 :(得分:1)
首先,取两列中的最大值
df['c5'] = np.maximum(df['c3'], df['c4'])
如果最大值等于'c4',则置1,否则置0(这表示在此范式下它来自'c3')。
df['c7'] = (df['c5'] == df['c4']).astype(int)
答案 1 :(得分:1)
使用idxmax
会立即产生列的名称
df[['c3','c4']].idxmax(1)
0 c3
1 c3
2 c3
3 c4
dtype: object
如果需要0
或1
可以随时映射
df[['c3','c4']].idxmax(1).map({'c3': 0, 'c4':1})
0 0
1 0
2 0
3 1
dtype: int64
答案 2 :(得分:0)
使用select
中的numpy
s1=df.c3==df.c5
s2=df.c4==df.c5
df['c7']=np.select([s1,s2],[0,1])
df
Out[670]:
c1 c2 c3 c4 c5 c6 c7
0 C875 DOID_3263 1.0000 9.650000e-18 1.000 unknown 0
1 C783 DOID_4064 1.0000 4.800000e-17 1.000 unknown 0
2 C372 DOID_0050084 0.9960 4.290000e-03 0.996 unknown 0
3 C43 DOID_936 0.0457 9.540000e-01 0.954 known 1