python - 熊猫检查一列中的条件并在另一列中填充数据
问题描述
我有一个数据框如下:
State Time
Approved 15 hours
Approved NaT
Rejected NaT
我想要某种逻辑来检查状态列中的值。如果值为“拒绝”且时间值为“NaT”,则在新列中将其替换为 N/A。如果值为“已批准”且时间值为“NaT”,则在新列中将其替换为“错误”。
最终结果应如下所示:
State Time Final
Approved 15 hours 15 hours
Approved NaT error
Rejected NaT N/A
简而言之,我希望能够对数据框中的各种数据列进行比较(if/else/switch 之类的),并在同一数据框中的列中填充值。
解决方案
当您需要应用多个条件时使用np.select()
m1 = (df['State'] == 'Rejected') & (df['Time'] == 'NaT')
m2 = (df['State'] == 'Approved') & (df['Time'] == 'NaT')
df['final'] = np.select(condlist=[m1,m2],
choicelist=['N/A','error'],
default=df['Time'])
print(df)
State Time final
0 Approved 15 hours 15 hours
1 Approved NaT error
2 Rejected NaT N/A
推荐阅读
- python - 将 for 循环值传递给 API 调用字段
- intellij-idea - 颤振导入随机停止工作,没有明显的原因
- android - 如何将命令行上的gradle项目设置传递给gcloud firebase test android run
- javascript - 选择后取消选择选择框
- javascript - 我在 javascript 上移动文本时遇到问题
- flutter - 如何在颤振中创建分隔符网格视图?
- here-api - Here Api - 列出州的所有城市
- java - 无法使用 Java 代码在 MongoDB 聚合中获取最大 _id 值
- angular - (Angular 7) Angular 正在开发模式下运行。调用 enableProdMode() 启用生产模式
- amazon-web-services - 如何使用 boto3 在 Python 中以管理员身份从 AWS Cognito 获取 JWT 访问令牌?