python - 创建新列,在插入之前检查其他列
问题描述
我有一个 df,我想插入一个检查 ColA、ColB 和 ColC 的新列。新列将具有值“是”,除非其中任何一个具有上述列的相应值(在字典中提供)。我如何在python中实现这一点?
import pandas as pd
import numpy as np
to_check= {'ColA':'Yes', 'ColB':'Y','ColC':'True'}
df = pd.DataFrame(
{
'ID': ['AB01', 'AB02', 'AB03', 'AB04', 'AB05','AB06','AB07','AB08'],
'ColA': ["Yes","No",np.nan,"No",
"Yes", "","", "No"],
'ColB': ["N","","Y","",
"Y", np.nan,"", "N"],
'ColC': [np.nan,"True","False",np.nan,"False",
"True", "",""],
'Type': [85,98,84,70,50,np.nan,85,74]
}
)
解决方案
如果没有any
行与字典值匹配,则可以使用:
c = df[to_check.keys()].eq(to_check).any(1)
df['Result'] = np.where(c,'','Yes')
print(df)
ID ColA ColB ColC Type Result
0 AB01 Yes N NaN 85.0
1 AB02 No True 98.0
2 AB03 NaN Y False 84.0
3 AB04 No NaN 70.0 Yes
4 AB05 Yes Y False 50.0
5 AB06 NaN True NaN
6 AB07 85.0 Yes
7 AB08 No N 74.0 Yes
推荐阅读
- flutter - 如何在导航到视图时将数据发送到控制器
- java - 将生产者连接到 kafka 主题
- javascript - 样式化多重自动完成策略
- python - Python AttributeError:'super'对象没有属性'testnet',但是当在super上调用__dict__时出现该属性?
- tensorflow - 这个模型是否代表了用于对象检测的 Faster R-CNN 模型?
- reactjs - 我可以使用 jsx 在同一个元素中添加新类吗?
- git - 在 Visual Studio Code 中处理 Alexa Skill 中的 git 问题
- java - 如何使用 VectorAssembler 设置火花数据集的 n 个特征?
- c# - ExecuteAsync 失败,但 Execute 工作正常
- python - 如何处理来自导入模块的未知类型的函数/方法