比较特定列的值,然后将值添加到另一个|熊猫|蟒蛇

时间:2018-08-24 02:53:22

标签: pandas dataframe compare

我有一个包含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

因此,最后的最终结果将是这样:

.+

有什么帮助吗?

3 个答案:

答案 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

如果需要01可以随时映射

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