pandas - 在 pandas 数据框中搜索特定值并在其上写入条件
问题描述
我有 student_data 数据框。
import pandas as pd
student_data = pd.DataFrame({'studen_id': ['fWz', 'a1m', 'a1m','4Gn','scw', 'scw', 'nF4c', 'a1m', 'scw', '4Gn', 'fWz' ],
'score': [' ', 15, 14, 11, 20, ' ', 9, 19, 17, 3, ' '] })
我想在这个数据框中搜索,如果每个 student_id 的分数中有 18、19 或 20 之一,那很好,我想用 1 显示它,否则在新数据框(final_df)中显示 0,通过使用熊猫或 numpy 方法和函数。
final_df(最后):
学生卡 | 好的? |
---|---|
1米 | 1 |
4Gn | 0 |
上一页 | 1 |
nF4c | 0 |
频率 | 0 |
我写了这段代码:
final_df = student_data.loc[(student_data['score'] == 18) | (student_data['score'] == 19) | (student_data['score'] == 20)]
但它并不完整,我想知道完成我的代码需要哪些条件。
解决方案
#your sample dataframe:
student_data = pd.DataFrame({'student_id': ['fWz', 'a1m', 'a1m','4Gn','scw', 'scw', 'nF4c', 'a1m', 'scw', '4Gn', 'fWz' ],
'score': [' ', 15, 14, 11, 20, ' ', 9, 19, 17, 3, ' '] })
尝试:
student_data['ok?']=student_data['score'].isin([18,19,20]).astype(int)
最后:
final_df=(student_data.sort_values('ok?',ascending=False)
.drop_duplicates(subset=['student_id'])
.drop('score',1)
.reset_index(drop=True))
输出final_df
:
student_id ok?
0 scw 1
1 a1m 1
2 fWz 0
3 4Gn 0
4 nF4c 0
推荐阅读
- swift - 如何使用 ARKit 和 RealityKit 检测 2D 图像
- javascript - 如何在 Javascript 中创建自声明变量
- neo4j - 在密码查询中返回部分结果
- selenium-webdriver - 如何修复这个 TestNG 异常?
- java - 根据通用类使用带有动态 json 键的杰克逊的通用 POJO 到 JSON
- python - Python:在单个图中绘制多个列
- php - Laravel 中的多步表单
- c - C中的getchar()与while循环之后不打印
- node.js - 检查令牌的中间件,无法重定向到登录页面
- spring - 在春季使用实体管理器实现分页