python - 如何为 Python Pandas 数据框制作灵活的命令过滤器
问题描述
我有以下df:
这些是患者索引日期之前和之后的处方药计数。
PREINDEX_N_DRUG_A_TAG POSTINDEX_N_DRUG_A_TAG PREINDEX_N_DRUG_B_TAG POSTINDEX_N_DRUG_B_TAG PREINDEX_N_DRUG_C_TAG POSTINDEX_N_DRUG_C_TAG
0 8 0 8 0 8
0 2 4 0 8 4
2 0 0 4 3 5
我喜欢按各种组合和标准过滤患者。
我做了一个刚性函数如下:
def filter_data(df):
df = df[
(df['PREINDEX_N_DRUG_A_TAG']>8) &
(df['POSTINDEX_N_DRUG_A_TAG']==2) &
(df['PREINDEX_N_DRUG_B_TAG']==0) &
(df['POSTINDEX_N_DRUG_B_TAG']>=2)
]
但是,我想以更灵活的方式制作函数,以便用户可以指定标准的数量和标准的形式。
例如,我想要一个函数来使用command_dict
诸如
command_dict = {
'Command1': ['PREINDEX_N_DRUG_A_TAG', '>', 8, '&'],
'Command2': ['POSTINDEX_N_DRUG_A_TAG', '==', 2, '&'],
'Command3': ['PREINDEX_N_DRUG_B_TAG', '==', 0, '&'],
'Command4': ['POSTINDEX_N_DRUG_B_TAG', '>=', 2, '&'],
'Command5': ['PREINDEX_N_DRUG_A_TAG', '>', 8, '&'],
'Command6': ['PREINDEX_N_DRUG_A_TAG', '>', 8, '&'],
}
并且能够执行刚性功能中的功能。
解决方案
这是完美的用例query
df.query((''.join([''.join(map(str,x)) for x in command_dict.values()])).strip('&'))
推荐阅读
- angular - 带有 HttpClient 参数的服务单元测试引发“TypeError:_this.handler.handle 不是函数”
- laravel - 路由组上显式模型绑定时的laravel错误
- php - Laravel 更改 eloquent 级联序列
- php - 注册表单 PHP SQL
- javascript - 加载和关闭 DOM 项时的 css 动画
- azure - 多个数据库的 Azure SQL Server 监视/警报 (v12)
- html - Visual Studio 2017、Windows 窗体和项目中的 HTML 页面
- hibernate - weblogic.management.DeploymentException:java.lang.IllegalArgumentException:接口 javax.persistence.Entity 在类加载器中不可见
- android - 如何在 ConstraintLayout 中设置布局权重
- android - 如何在真实设备上运行 Android 应用程序?