python - 遍历数据框中的所有行并根据比较其他列生成新列
问题描述
我有以下数据框:
ID | 姓名 | 价值 | 意思是 | 性病 | 上 | 降低 |
---|---|---|---|---|---|---|
894.68 | 154.00 | 2.33 | 203.16 | 189.18 | ||
1045.28 | 196.17 | 4.50 | 204.00 | 186 |
对于每一行,我试图通过比较value
with来创建一个新列upper
,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())
或者
viaapply()
但它会很慢,因为它在引擎盖下是循环的,所以通过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
推荐阅读
- pytorch - 如何为 torch.cat 初始化张量
- c# - 如何使用 web 服务从用户控件使 jquery 自动完成工作
- vue.js - 在以编程方式创建的孩子中观看道具更新
- c++ - 在 C++ 中尝试从 Windows 10 中的 UNC 运行 EXE。C++ 非常新
- c# - 用于对来自 C# 应用程序的数据执行大量计算的 Azure 服务
- c++ - std::regex::multiline 不存在
- excel - 从 Google 搜索中获取图片链接
- python-3.x - Pandas:使用所需列顺序的列名数组,选择那些存在的,NULL那些不存在的
- r - ICD-10 变量重新编码
- angular - 使用 unprotectedResources 与 Angular 集成的 MSAL