用Python过滤具有特定需求的数据帧

2024-09-26 18:12:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想过滤一个数据帧,有一些困难这样做

我的数据帧如下所示:

+--------+----------+--------+-------+-----+------+------+------+--------+------+----+----+----------+-----+-----+------+------+-------------+------+
|  node  |   date   | isSetl | qual  | run | firm | acct | type | isCust | seg  | ec | cc | currency | lov | sov | isM  | pbc  |   spanReq   | anov |
+--------+----------+--------+-------+-----+------+------+------+--------+------+----+----+----------+-----+-----+------+------+-------------+------+
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | USD      |     |     | MNT  | CORE |   124073.69 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | CNY      |     |     |      |      |       43480 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | USD      |     |     |      |      |      117750 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | USD      |     |     | INIT | CORE |   124073.69 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | CNY      |     |     |      |      |       43480 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | USD      |     |     |      |      |      117750 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | CNH      |     |     | MNT  | CORE |           0 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | CNY      |     |     |      |      |      986680 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |    28786701 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | USD      |     |     |      |      |       67790 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | CNH      |     |     | INIT | CORE |           0 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | CNY      |     |     |      |      |      986680 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |    28786701 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | USD      |     |     |      |      |       67790 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | HKD      |     |     | MNT  | CORE | 17381842.35 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |      245850 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | USD      |     |     |      |      |     2193000 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | HKD      |     |     | INIT | CORE | 17381842.35 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |      245850 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | USD      |     |     |      |      |     2193000 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   70 | S    | TRUE   | CUST |    |    | HKD      |     |     | MNT  | CORE |      163900 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   70 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |      163900 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   70 | S    | TRUE   | CUST |    |    | HKD      |     |     | INIT | CORE |      163900 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   70 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |      163900 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   80 | S    | TRUE   | CUST |    |    | HKD      |     |     | MNT  | CORE |    25733800 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   80 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |    25733800 |    0 |
| oReq   | 20190627 | TRUE   | final |   0 | FCG  |   80 | S    | TRUE   | CUST |    |    | HKD      |     |     | INIT | CORE |    25733800 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   80 | S    | TRUE   | CUST |    |    | HKD      |     |     |      |      |    25733800 |    0 |
+--------+----------+--------+-------+-----+------+------+------+--------+------+----+----+----------+-----+-----+------+------+-------------+------+

我想进行筛选,以便需要“isM”列中INIT下面的行

我想要的输出:

+--------+----------+--------+-------+-----+------+------+------+--------+------+----+----+----------+-----+-----+-----+-----+----------+------+
|  node  |   date   | isSetl | qual  | run | firm | acct | type | isCust | seg  | ec | cc | currency | lov | sov | isM | pbc | spanReq  | anov |
+--------+----------+--------+-------+-----+------+------+------+--------+------+----+----+----------+-----+-----+-----+-----+----------+------+
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | CNY      |     |     |     |     |    43480 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   10 | S    | TRUE   | CUST |    |    | USD      |     |     |     |     |   117750 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | CNY      |     |     |     |     |   986680 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | HKD      |     |     |     |     | 28786701 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   40 | S    | TRUE   | CUST |    |    | USD      |     |     |     |     |    67790 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | HKD      |     |     |     |     |   245850 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   60 | S    | TRUE   | CUST |    |    | USD      |     |     |     |     |  2193000 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   70 | S    | TRUE   | CUST |    |    | HKD      |     |     |     |     |   163900 |    0 |
| curReq | 20190627 | TRUE   | final |   0 | FCG  |   80 | S    | TRUE   | CUST |    |    | HKD      |     |     |     |     | 25733800 |    0 |
+--------+----------+--------+-------+-----+------+------+------+--------+------+----+----+----------+-----+-----+-----+-----+----------+------+

我如何过滤这样的结果才能得到这样的结果

在这方面需要一些指导


Tags: 数据corenodetrueinitfinalusdcust
1条回答
网友
1楼 · 发布于 2024-09-26 18:12:26

这应该能奏效。它将两个临时列添加到数据帧(df):

  • temp跟踪isM列等于INIT的行。这些行稍后将被删除

  • temp_ism向前填充isM列,以便查找INIT后面的所有行

    df = df.assign(temp=df['isM'].eq('INIT'), temp_ism=df['isM'].ffill())
    # Drop the first `INIT` rows (`~df['temp']`) but retain the following rows.
    result = df[df['temp_ism'].eq('INIT') & ~df['temp']].iloc[:, :-2]  # Drop the two temporary columns.
    df = df.iloc[:, :-2]  # Drop the two temporary columns from the original dataframe.
    

相关问题 更多 >

    热门问题