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
列求和,则可以使用get1
,而无需减去:
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.1np.选择()
和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