我有以下数据框:
ID | 姓名 | 价值 | 意思 | 标准 | 上 | 降低 |
---|---|---|---|---|---|---|
894.68 | 154.00 | 2.33 | 203.16 | 189.18 | ||
1045.28 | 196.17 | 4.50 | 204.00 | 186 |
对于每一行,我试图通过比较value
withupper
和来创建一个新列,lower
如下所示:
df['new_col'] = df[df['mean'].notnull()].apply(lambda x: False if x['value']>x['upper'] or x['value']<x['lower'] else True)
它给了我一个我不太清楚的错误:KeyError: 'value'
. 我猜它找不到x['value']
,对吧?我如何解决它?
尝试直接输入您的条件,这将直接为您提供布尔系列:
df['new_col'] = (~((df['value']>df['upper']) | (df['value']<df['lower'])) & df['mean'].notnull())
或者
通过apply()
但它会很慢,因为它在引擎盖下循环所以通过axis=1
:
df['new_col'] = df[df['mean'].notnull()].apply(lambda x: False if x['value']>x['upper'] or x['value']<x['lower'] else True,axis=1)
的输出df
:
ID name value mean std upper lower new_col
0 NaN NaN 894.68 154.00 2.33 203.16 189.18 False
1 NaN NaN 1045.28 196.17 4.50 204.00 186.00 False
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句