我有一个数据框:df-
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
我想添加一列“结果”,如果“ E”列中的值大于B,C和D列中的值,则应返回1,否则返回0。
输出应为:
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
对于几列,我将使用类似:if(and(E> B,E> C,E> D),1,0)的逻辑,但是我必须比较大约20列(从B到U)的列名为' V'。另外,该数据框具有约10万行。
我在用
df['Result']=np.where((df.ix[:,1:20])<df['V']).all(1),1,0)
它给内存错误。
一种可能的解决方案是在中进行比较numpy
,最后将布尔值掩码转换为int
s:
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句