Python:如何在pandas中进行条件操作?

Python:如何在pandas中进行条件操作?,python,pandas,Python,Pandas,我有一个数据帧df,如下所示 df A B C 0 1 0.7 0.3 1 0 0.2 0.8 2 0 0.8 0.2 3 1 0.6 0.4 4 1 0.9 0.1 我想创建一个列D,如果a==1,则该列的值为(1-B),如果a==0,则该列的值为(1-C)。所以 df A B C D 0 1 0.7 0.3 0.3 1 0 0.2 0.8 0.2 2 0 0.8 0.2

我有一个数据帧
df
,如下所示

df   A   B    C
0    1   0.7 0.3
1    0   0.2 0.8
2    0   0.8 0.2
3    1   0.6 0.4
4    1   0.9 0.1
我想创建一个列
D
,如果a==1,则该列的值为
(1-B),如果a==0,则该列的值为
(1-C)。所以

df   A   B    C    D
0    1   0.7 0.3  0.3
1    0   0.2 0.8  0.2
2    0   0.8 0.2  0.8
3    1   0.6 0.4  0.4
4    1   0.9 0.1  0.1

如果按
B
C
列求和,则可以使用get
1
,而无需减去:

df['D'] = np.where(df['A'] == 0, df['B'], df['C'])
print (df)
   A    B    C    D
0  1  0.7  0.3  0.3
1  0  0.2  0.8  0.2
2  0  0.8  0.2  0.8
3  1  0.6  0.4  0.4
如果要使用公式和
A
列只包含
1
0
值:

df['D'] = np.where(df['A'] == 0, 1 - df['C'], 1 - df['B'])
print (df)
   A    B    C    D
0  1  0.7  0.3  0.3
1  0  0.2  0.8  0.2
2  0  0.8  0.2  0.8
3  1  0.6  0.4  0.4
4  1  0.9  0.1  0.1
如果可能,
A
列中的多个值(大多数通用解决方案)使用:

打印(df)
A、B、C
0  1  0.7  0.3
1  0  0.2  0.8
2  0  0.8  0.2
3  1  0.6  0.4

4.3 0.9 0.1如果按
B
C
列求和得到
1
可以使用,无需减去:

df['D'] = np.where(df['A'] == 0, df['B'], df['C'])
print (df)
   A    B    C    D
0  1  0.7  0.3  0.3
1  0  0.2  0.8  0.2
2  0  0.8  0.2  0.8
3  1  0.6  0.4  0.4
如果要使用公式和
A
列只包含
1
0
值:

df['D'] = np.where(df['A'] == 0, 1 - df['C'], 1 - df['B'])
print (df)
   A    B    C    D
0  1  0.7  0.3  0.3
1  0  0.2  0.8  0.2
2  0  0.8  0.2  0.8
3  1  0.6  0.4  0.4
4  1  0.9  0.1  0.1
如果可能,
A
列中的多个值(大多数通用解决方案)使用:

打印(df)
A、B、C
0  1  0.7  0.3
1  0  0.2  0.8
2  0  0.8  0.2
3  1  0.6  0.4
4.3 0.9 0.1
np.选择()
np.其中()
是一条路要走

还有一个选择,也可以

df.loc[df.A == 1, 'D'] = 1 - df.B
df.loc[df.A == 0, 'D'] = 1 - df.C
np.select()
np.where()
是正确的选择

还有一个选择,也可以

df.loc[df.A == 1, 'D'] = 1 - df.B
df.loc[df.A == 0, 'D'] = 1 - df.C