【问题标题】:How to make flexible command filter for Python Pandas dataframe如何为 Python Pandas 数据框制作灵活的命令过滤器
【发布时间】:2019-09-24 13:48:51
【问题描述】:

我有以下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, '&'],
    }

并且能够执行刚性功能中的功能。

【问题讨论】:

    标签: python python-3.x pandas filter functional-programming


    【解决方案1】:

    这是query 的完美用例

    df.query((''.join([''.join(map(str,x)) for x in command_dict.values()])).strip('&'))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 2011-06-25
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2012-04-25
      相关资源
      最近更新 更多