【发布时间】:2020-07-30 22:26:02
【问题描述】:
我有一张桌子material
+--------+-----+-------------------+----------------+-----------+
| ID | REV | name | Description | curr |
+--------+-----+-------------------+----------------+-----------+
| 211-32 | 001 | Screw 1.0 | Used in MAT 1 | READY |
| 211-32 | 002 | Screw 2 plus | can be Used-32 | WITHDRAWN |
| 212-41 | 001 | Bolt H1 | Light solid | READY |
| 212-41 | 002 | BOLT H2+Form | Heavy solid | READY |
| 101-24 | 001 | HexHead 1-A | NOR-1 | READY |
| 101-24 | 002 | HexHead Spl | NOR-22 | READY |
| 423-98 | 001 | Nut Repair spare | NORM1 | READY |
| 423-98 | 002 | Nut Repair Part-C | NORM2 | WITHDRAWN |
| 423-98 | 003 | Nut SP-C | NORM2+NORM1 | NULL |
| 654-01 | 001 | Bar | Specific only | WITHDRAWN |
| 654-01 | 002 | Bar rod-S | Designed+Spe | WITHDRAWN |
| 654-01 | 003 | Bar OPG | Hard spec | NULL |
+--------+-----+-------------------+----------------+-----------+
这里每个 ID 可以有多个修订。我想采用最新的修订版(即最高的 001,002,003 等)。但是如果最新版本的curr 是NULL(string) 或WITHDRAWN,那么我已经采用了以前的版本及其相应的值。如果即使是 curr 是 NULL 或 WITHDRAWN 我必须再次转到以前的版本。如果所有版本都有相同的问题,那么我们可以忽略它。所以预期的输出是
+--------+-----+------------------+---------------+-------+
| ID | REV | name | Description | curr |
+--------+-----+------------------+---------------+-------+
| 211-32 | 001 | Screw 1.0 | Used in MAT 1 | READY |
| 212-41 | 002 | BOLT H2+Form | Heavy solid | READY |
| 101-24 | 002 | HexHead Spl | NOR-22 | READY |
| 423-98 | 001 | Nut Repair spare | NORM1 | READY |
+--------+-----+------------------+---------------+-------+
我对 Python 很陌生。我试过下面的代码,但我不工作。任何建议都非常感谢。
import pandas as pd
import numpy as np
mydata = pd.read_csv('C:/Myfolder/Python/myfile.csv')
mydata.sort_values(['ID','REV'], ascending=[True, False]).drop_duplicates('',keep=last)
【问题讨论】: