比较多列pandas dataframe和一列

时间:2018-05-23 10:06:04

标签: python pandas compare

我有一个数据帧: 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

它会导致内存错误。

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