【发布时间】:2021-11-09 18:18:28
【问题描述】:
我正在尝试在我的数据集中整合一对多关系,同时为每个项目(有时是多个项目)创建链接。对于给定的工单,可以有 1 个或多个工单,因此我使用以下内容在单个列中合并和列出工单:
df = df.groupby(['Date', 'Ticket ID', 'Score', 'many other Columns...'])['Work Order'].apply(', '.join).reset_index()
这给了我一个很好的输出,其中工作订单要么单独列出,要么以逗号分隔,如下所示:
Date Ticket ID Work Order
2018-08-30 22:52:25 1444008 119846184
2021-09-29 13:33:49 1724734 122445397, 122441551
现在,我还想为工单创建同样以逗号分隔的链接。对于单个工单,以下工作正常:
woLink = r'www.google.com/woNum='
df['WO Link'] = woLink + df['Work Order'].astype(str)
但是对于倍数,它基本上撤消了 groupby 并重新添加了我分组的行。从上面的示例数据来看:
# Wrong
Date Ticket ID Work Order Link
2018-08-30 22:52:25 1444008 119846184 google.com/woNum=119846184
2021-09-29 13:33:49 1724734 122445397 google.com/woNum=122445397
2021-09-29 13:33:49 1724734 122441551 google.com/woNum=122441551
我想要的是:
Date Ticket ID Work Order Link (s)
2018-08-30 22:52:25 1444008 119846184 google.com/woNum=119846184
2021-09-29 13:33:49 1724734 122445397, 122441551 google.com/woNum=122445397, google.com/woNum=122441551
我尝试了几种不同的 Groupby/apply 变体,例如重新组合但没有成功:
df = df.groupby(['Date', 'Ticket ID', 'Score', 'many other Columns...'])['Link'].apply(', '.join).reset_index()
它似乎总是再次重复该行 - 我知道这是因为 WO 和 WOLink 都有一个 1 到多个,但我似乎不知道如何同时处理这两个。
如何分组和合并此数据框?
【问题讨论】:
标签: python pandas pandas-groupby