gpt4 book ai didi

python - 在两列上分组并使用 pandas - Python 在特定列上应用转换(分区)、滚动和连接

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:33 26 4
gpt4 key购买 nike

我有带列(period、spn、cpt、payer)的 DataFrame。我必须仅连接 2 个周期的列(付款人)值(仅滚动两个月)。 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_firstdf 的原始值填充。

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 - 在两列上分组并使用 pandas - Python 在特定列上应用转换(分区)、滚动和连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57006983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com