我有带列的DataFrame(句点,spn,cpt,付款人)。我只能将2期的column(payer)值连接起来(仅滚动两个月)。 DF样本:

period     spn  cpt payer
7/1/2018    a   23  UNITED, HEALTH
7/1/2018    a   24  CARE, MEDI
7/1/2018    b   23  ASSIGN
8/1/2018    a   23  ASSIGN
8/1/2018    a   24  CARE, MEDI
8/1/2018    b   23  ASSIGN, MEDI
9/1/2018    a   23  ASSIGN
9/1/2018    a   24  MEDI
9/1/2018    b   23  ASSIGN, MEDI


我尝试过:
df.groupby(['spn', 'cpt'])['payer'].transform(lambda x: x.rolling(2, min_periods = 1).apply(', '.join, raw=False))

我收到一个错误:无法处理此类型->对象。

因此,将column(payer)转换为字符串类型,并尝试使用与上述相同的代码。但是我遇到了同样的错误。请帮我解决这个问题。

预期成绩

period    spn   cpt  payer             payer_concate
7/1/2018    a   23   UNITED, HEALTH    UNITED, HEALTH, ASSIGN
7/1/2018    a   24   CARE, MEDI        CARE, MEDI, CARE, MEDI
7/1/2018    b   23   ASSIGN            ASSIGN, ASSIGN, MEDI
8/1/2018    a   23   ASSIGN            ASSIGN, ASSIGN
8/1/2018    a   24   CARE, MEDI        CARE, MEDI, MEDI
8/1/2018    b   23   ASSIGN, MEDI      ASSIGN, MEDI, ASSIGN, MEDI
9/1/2018    a   23   ASSIGN            ASSIGN
9/1/2018    a   24   MEDI              MEDI
9/1/2018    b   23   ASSIGN, MEDI      ASSIGN, MEDI


提前致谢

最佳答案

首先按句点对值进行排序。然后使用groupby并转换并连接相邻的付款人。由于最后一个期间没有关注者,因此该值将为None,因此它们将由combine_first填充为df的原始值。

s = df.sort_values('period').groupby(['spn','cpt']).payer\
                       .transform(lambda x: x +',' + x.shift(-1)).combine_first(df.payer)
df["payer_concatenate"] = s


结果

    period      spn cpt payer           payer_concatenate
0   7/1/2018    a   23  UNITED,HEALTH   UNITED,HEALTH,ASSIGN
1   7/1/2018    a   24  CARE,MEDI       CARE,MEDI,CARE,MEDI
2   7/1/2018    b   23  ASSIGN          ASSIGN,ASSIGN,MEDI
3   8/1/2018    a   23  ASSIGN          ASSIGN,ASSIGN
4   8/1/2018    a   24  CARE,MEDI       CARE,MEDI,MEDI
5   8/1/2018    b   23  ASSIGN,MEDI     ASSIGN,MEDI,ASSIGN,MEDI
6   9/1/2018    a   23  ASSIGN          ASSIGN
7   9/1/2018    a   24  MEDI            MEDI
8   9/1/2018    b   23  ASSIGN,MEDI     ASSIGN,MEDI

关于python - 在两列上进行Groupby,然后使用pandas在特定列上应用transform(Partition),滚动和串联-Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57006983/

10-10 08:51