python - 比 iterrows 迭代 df 并设置另一个列值的更好方法
问题描述
我想遍历 df 行并基于两列为其中之一分配一个新值或向新列添加新值。我可以使用 iterrows() 做到这一点,但我已经阅读了不推荐的方法。
数据如下所示:
name xfactor t_age height
Jack NaN 24 180
John NaN 26 178
我使用这段代码来完成任务:
for i, row in df.iterrows():
try:
df.at[i, 't_age'] = row['t_age'] * row['height']
except SomeException:
df.at[i, 'xfactor'] = 1
预期输出可能如下所示:
name xfactor t_age height
Jack NaN 4320 180
John 1 26 178
解决方案
是iterrows()
的,不推荐。你可以itertuples()
改用。
for row in df.itertuples():
try:
df.at[row.Index, 't_age'] = row.t_age * row.height
except SomeException:
df.at[row.Index, 'xfactor'] = 1
推荐阅读
- java - 从 jni_sys::JNIEnv 获取 jni::JNIEnv
- javascript - 我需要在 2021 年在 react 项目中手动设置 babel 和 webpack
- parsing - 如何在haskell中完成这个迷你序言的解析器的实现?
- sql - 无法在大查询中加入表
- java - 为我的具有 SSL 证书的 Web 应用程序添加了 HTTP 支持
- sql - 在 SQL 中按组级别过滤
- flutter - 颤动的TextField使用TextEditingController获取文本但为空
- javascript - 不可分配给 [React] 类型的参数
- powershell - Visual Studio 代码 bash 缺少错误跟踪
- reactjs - 控制台返回 [object Object],在 React 上虽然我认为它应该返回一个字符串