【发布时间】:2020-07-30 22:10:18
【问题描述】:
我有如下数据框
ID TYPE POLICY_NUMBER DISB_AMT
738 20 FLDINC MSH39990 1
738 21 MSH39990 3848
750 20 INF395737 1
750 21 INF395737 FLDINCL 2350
892 20 SJK389743 3904
892 21 MSH284989 1
我正在尝试按 ID 分组并提取策略编号并在其他 TYPE 中搜索,例如:(TYPE = 20 或 21)如果策略编号在两个 TYPE 中相同,则检查是否 DISB_AMT>1在两排。如果为 true,则不要将其附加到数据框。
例如:ID 738 在两行中具有相同的策略编号 MSH39990。我写了一个脚本来只提取数字,以便更容易比较。 ID 738 具有相同的保单编号。现在我们检查 DISB_AMT 是否 > 1。在第一行中它不是 >1。在第二行中,我们有 3848>1。不要在结果中包含此 ID。对于 ID 892,由于两种 TYPE 中的 POLICY NUMBER 不同,我们仅检查 DISB_AMT>1 是否为 TYPE 21。由于它不是 >1,因此我们将此行添加到结果数据帧中。
如何将其与其他类型进行比较并检查策略编号是否相同并构建其余逻辑?
预期输出
ID TYPE POLICY_NUMBER DISB_AMT
892 21 MSH284989 1
代码
data = [{"ID":738,"TYPE":20,"POLICY_NUMBER":"FLDINC MSH39990","DISB_AMT":1},
{"ID":738,"TYPE":21,"POLICY_NUMBER":"MSH39990","DISB_AMT":3848},
{"ID":750,"TYPE":20,"POLICY_NUMBER":"INF395737","DISB_AMT":1},
{"ID":750,"TYPE":21,"POLICY_NUMBER":"INF395737 FLDINCL","DISB_AMT":2350},
{"ID":892,"TYPE":20,"POLICY_NUMBER":"SJK389743","DISB_AMT":3904},
{"ID":892,"TYPE":21,"POLICY_NUMBER":"MSH284989","DISB_AMT":1}
]
df=pd.DataFrame(data)
df['CLEANED_POL_NBR']=df.POLICY_NUMBER.str.extract('(\d+)')
【问题讨论】: