我有一个数据帧: DF -
Dockerfile
我想添加一个列'结果'如果列中的值为“E'大于B,C和C中的值其他D列返回0。
输出应为:
A B C D E
0 V 10 5 18 20
1 W 9 18 11 13
2 X 8 7 12 5
3 Y 7 9 7 8
4 Z 6 5 3 90
对于少数列,我会使用如下逻辑:if(和(E> B,E> C,E> D),1,0), 但我必须比较大约20个列(从B到U)和库尔名称' V'。此外,数据框有大约10万行。
我正在使用
A B C D E Result
0 V 10 5 18 20 1
1 W 9 18 11 13 0
2 X 8 7 12 5 0
3 Y 7 9 7 8 0
4 Z 6 5 3 90 1
它会导致内存错误。
答案 0 :(得分:2)
一种可能的解决方案是将numpy
和最后一次转换布尔掩码与int
进行比较:
df['Result'] = (df.iloc[:, 1:4].values < df[['E']].values).all(axis=1).astype(int)
print (df)
A B C D E Result
0 V 10 5 18 20 1
1 W 9 18 11 13 0
2 X 8 7 12 5 0
3 Y 7 9 7 8 0
4 Z 6 5 3 90 1