【发布时间】:2022-01-09 14:51:26
【问题描述】:
这是 pandas 中一个 sql 查询的响应。我想根据问题和客户将“标签列”连接在一起。 我尝试了 Group By,但仅适用于整数值。 任何想法,我怎么能做到这一点? 基于 Pandas 的解决方案也应该没问题。
我试过.groupby,也在pandas中,命令和输出在下面,它只给了我所需数据帧的一个子集。
是否可以针对第一个数据帧中的每个 Issue 更新 label 列并删除重复项并获得如下预期的输出?
SQL 版本是:
Microsoft SQL Server 2014
输出:
| Issue | Subject | type | Team | Sub Team | Client | Priority | CreatedOn | Label | BuiltOn | CreatedBy | Status | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | ABCABC | Bug | Develop | Automation | Andy | 0 | 2021-01-11 00:00:00 | Enhancement | None | John | InProgress |
| 1 | 2 | DEFDEF | Bug | Develop | Automation | Judy | 0 | 2021-01-10 00:00:00 | Feature | None | Andre | New |
| 2 | 3 | HIGHIG | Bug | Develop | Testing123 | Cathy | 2 | 2021-02-11 00:00:00 | Feature | None | Keith | New |
| 3 | 3 | HIGHIG | Bug | Develop | Testing123 | Cathy | 2 | 2021-02-11 00:00:00 | Internal | None | Keith | New |
| 4 | 4 | XYZXYZ | Bug | Develop | Automation | Jack | 1 | 2021-05-11 00:00:00 | Enhancement | None | Maya | Analysis |
| 5 | 4 | XYZXYZ | Bug | Develop | Automation | Jack | 1 | 2021-05-11 00:00:00 | Internal | None | Maya | Analysis |
| 6 | 4 | XYZXYZ | Bug | Develop | Automation | Larry | 1 | 2021-05-11 00:00:00 | Enhancement | None | Maya | Analysis |
| 7 | 4 | XYZXYZ | Bug | Develop | Automation | Larry | 1 | 2021-05-11 00:00:00 | Internal | None | Maya | Analysis |
| 8 | 4 | XYZXYZ | Bug | Develop | Automation | Colin | 1 | 2021-05-11 00:00:00 | Enhancement | None | Maya | Analysis |
| 9 | 4 | XYZXYZ | Bug | Develop | Automation | Colin | 1 | 2021-05-11 00:00:00 | Internal | None | Maya | Analysis |
| 10 | 4 | XYZXYZ | Bug | Develop | Automation | Nitin | 1 | 2021-05-11 00:00:00 | Enhancement | None | Maya | Analysis |
| 11 | 4 | XYZXYZ | Bug | Develop | Automation | Nitin | 1 | 2021-05-11 00:00:00 | Internal | None | Maya | Analysis |
| 12 | 4 | XYZXYZ | Bug | Develop | Automation | Lisa | 1 | 2021-05-11 00:00:00 | Enhancement | None | Maya | Analysis |
| 13 | 4 | XYZXYZ | Bug | Develop | Automation | Lisa | 1 | 2021-05-11 00:00:00 | Internal | None | Maya | Analysis |
预期(注意标签列):
| Issue | Subject | Issue_type | Team | Sub Team | Client | Priority | CreatedOn | Label | BuiltOn | CreatedBy | Status | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | ABC | Bug | Develop | Automation | Andy | 0 | 2021-01-11 00:00:00 | Enhancement | None | John | InProgress |
| 1 | 2 | DEF | Bug | Develop | Automation | Judy | 0 | 2021-01-10 00:00:00 | Feature | None | Andre | New |
| 2 | 3 | HIG | Bug | Develop | Testing | Cathy | 2 | 2021-02-11 00:00:00 | Feature, Internal | None | Keith | New |
| 3 | 4 | XYZ | Bug | Develop | Automation | Jack | 1 | 2021-05-11 00:00:00 | Enhancement, Internal | None | Maya | Analysis |
| 4 | 4 | XYZ | Bug | Develop | Automation | Larry | 1 | 2021-05-11 00:00:00 | Enhancement, Internal | None | Maya | Analysis |
| 5 | 4 | XYZ | Bug | Develop | Automation | Colin | 1 | 2021-05-11 00:00:00 | Enhancement, Internal | None | Maya | Analysis |
| 6 | 4 | XYZ | Bug | Develop | Automation | Nitin | 1 | 2021-05-11 00:00:00 | Enhancement, Internal | None | Maya | Analysis |
| 7 | 4 | XYZ | Bug | Develop | Automation | Lisa | 1 | 2021-05-11 00:00:00 | Enhancement, Internal | None | Maya | Analysis |
更新: 这是他们的查询:
SELECT I.Issue,
I.Subject,
I.type,
P.Team,
P.Subteam,
CR.Client,
I.Priority,
I.CreatedOn,
L.Label,
I.BuiltOn,
I.CreatedBy,
I.Status
FROM master.IssueRequests AS I
JOIN master.Participants AS P
ON P.Issue = I.Issue
JOIN master.ClientRecords AS CR
ON CR.Issue = I.Issue
JOIN master.IssueLabels AS L
ON L.Issue = I.Issue
WHERE I.Issue IN ('2652523', '2703670', '2984120')
更新2
df.groupby的输出:
df.groupby(['Issue', 'Client'])['Label'].apply(','.join).reset_index()
输出:
| Issue | Client | Label | |
|---|---|---|---|
| 0 | 1 | Andy | Enhancement |
| 1 | 2 | Judy | Feature |
| 2 | 3 | Cathy | Feature,Internal |
| 3 | 4 | Colin | Enhancement,Internal |
| 4 | 4 | Jack | Enhancement,Internal |
| 5 | 4 | Larry | Enhancement,Internal |
| 6 | 4 | Lisa | Enhancement,Internal |
| 7 | 4 | Nitin | Enhancement,Internal |
澄清:合并除Label 之外的所有列将不起作用,因为在某些情况下,其他一些数据可能为“null”或不同,这可能会导致数据完全丢失。如果其他列中的数据不同,我可以保留该数据的第一个实例。
【问题讨论】:
-
请也向我们展示查询
-
在 pandas 中,groupby 可以用于非数字列
-
@Squirrel,添加了查询
-
@EmiOB,也添加了 pandas groupby 结果
-
@akshat 您希望其他列发生什么?优先级是平均值吗?您想保留哪个日期创建的?与 createdby 和 status 等相同
标签: sql-server python-3.x pandas concatenation group-concat