【问题标题】:pandas how to filter and slice with multiple conditions熊猫如何在多个条件下过滤和切片
【发布时间】:2021-08-23 00:37:59
【问题描述】:

使用 pandas,如何返回按“GEN”列中的值 2、“AGE”列中的值 20 过滤的数据框并排除名称为“GEN”和“BP”的列?在此先感谢:)

AGE GEN BMI     BP  S1  S2      S3  S4  S5      S6  Y
59  2   32.1    101 157 93.2    38  4   4.8598  87  151
48  1   21.6    87  183 103.2   70  3   3.8918  69  75
72  2   30.5    93  156 93.6    41  4   4.6728  85  141
24  1   25.3    84  198 131.4   40  5   4.8903  89  206
50  1   23      101 192 125.4   52  4   4.2905  80  135
23  1   22.6    89  139 64.8    61  2   4.1897  68  97
20  2   22      90  160 99.6    50  3   3.9512  82  138
66  2   26.2    114 255 185     56  4.5 4.2485  92  63
60  2   32.1    83  179 119.4   42  4   4.4773  94  110
20  1   30      85  180 93.4    43  4   5.3845  88  310

【问题讨论】:

  • 可能有点矫枉过正 -> 通过索引选择:df.set_index(['AGE', 'GEN']).loc[[(20, 2)], lambda df: df.columns.difference(['GEN', 'BP'])]

标签: pandas filtering slice


【解决方案1】:

你可以这样做 -

cols = df.columns[~df.columns.isin(['GEN','BP'])]

out=df.loc[(df['GEN'] == 2) & (df['AGE'] == 20),cols]

out=df.query("'GEN'==2 and 'AGE'==20").loc[cols]

【讨论】:

    猜你喜欢
    • 2017-03-13
    • 2017-10-03
    • 2016-07-12
    • 2020-09-04
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    相关资源
    最近更新 更多