python - Python 评分 pandas,字符串验证
问题描述
我正在尝试为具有两个属性(列)值等于“开”的每个参与者(由一行表示)添加一个分数“1”。
但是,即使单元格都包含“开”,这也不会分配 1 分。
有更简单的解决方案吗?
for row in reduction.itertuples():
if str(reduction['q1-1']) == "On" and str(reduction['q1-2']) == "On":
q1 = 1
else:
q1 = 0
print(q1)
解决方案
如果需要新列q
创建布尔掩码并转换为整数:
reduction = pd.DataFrame({
'q1-1': ['On','On','Off','Off'],
'q1-2': ['On','Off','On','Off']
})
mask = (reduction['q1-1'].astype(str) == "On") & (reduction['q1-2'].astype(str) == "On")
#alternative
mask = (reduction[['q1-1','q1-2']].astype(str) == "On").all(axis=1)
reduction['q'] = mask.astype(int)
print (reduction)
q1-1 q1-2 q
0 On On 1
1 On Off 0
2 Off On 0
3 Off Off 0
替代解释:
将子集选择的列转换为字符串并比较:DataFrame.eq
==
print (reduction[['q1-1','q1-2']].astype(str) == "On")
q1-1 q1-2
0 True True
1 True False
2 False True
3 False False
然后检查每行的all
值是否为s:True
print ((reduction[['q1-1','q1-2']].astype(str) == "On").all(axis=1))
0 True
1 False
2 False
3 False
dtype: bool
推荐阅读
- c# - 查询的结果从实体框架查询返回相同的 COLUMN_NAME 值,这没有意义
- javascript - Atom 的反应包没有安装
- pandas - 如何进行滑动窗口转换?
- mysql - 存储过程的创建未执行
- python - Pandas矢量化中的复杂条件
- sqlite - 如果我的 Winforms 应用程序的平台设置为 x86,SQLite 会无法运行吗?
- java - Quarkus Redis 客户端不使用来自 application.properties 的主机
- android - 在recyclerview列表中添加项目时,它将更改聊天室中的所有消息,底部已经可用的消息
- jwt - User.Identity.GetUserId 返回用户名而不是 wso2 令牌中的用户 ID
- random - 如何在 rust 中生成随机 unicode 字符串?