当特定列相同时附加ID

发布于 2025-02-11 08:38:37 字数 658 浏览 2 评论 0原文

例如,我的表

| ID       | VALUE        |

| -------- | -------------- |
| 1    | row24           |
| 2   | row24            |
| 3    | row1            |
| 4   | row15            |
| 5    | row16           |
| 6   | row17            |
| 8   | row24            |
| 7   | row17            |
| 9   | row19            |

输出应该是:

| ID       | VALUE        |

| -------- | -------------- |
| [1,2,8]    | row24           |

| 3    | row1            |
| 4   | row15            |
| 5    | row16           |
| [6,7]   | row17         |
| 9   | row19            |

我认为大熊猫中的groupby也许是一个解决方案,我尝试了一些,但它没有起作用...

For example I have this table

| ID       | VALUE        |

| -------- | -------------- |
| 1    | row24           |
| 2   | row24            |
| 3    | row1            |
| 4   | row15            |
| 5    | row16           |
| 6   | row17            |
| 8   | row24            |
| 7   | row17            |
| 9   | row19            |

Output should be:

| ID       | VALUE        |

| -------- | -------------- |
| [1,2,8]    | row24           |

| 3    | row1            |
| 4   | row15            |
| 5    | row16           |
| [6,7]   | row17         |
| 9   | row19            |

I think maybe groupby in pandas is a solution, i tried some but it didnt work...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

楠木可依 2025-02-18 08:38:37

如果需要组合列表和标量,请使用 groupby.agg 带有lambda函数:

df =  (df.groupby('VALUE', sort=False)['ID']
        .agg(lambda x: list(x) if len(x) > 1 else x)
        .reset_index(name='IDS'))
print (df)
   VALUE        IDS
0  row24  [1, 2, 8]
1   row1          3
2  row15          4
3  row16          5
4  row17     [6, 7]
5  row19          9

因为IG汇总仅列表获取OALSO OALSO OALSO元素列表:

df =  (df.groupby('VALUE', sort=False)['ID']
        .agg(list)
        .reset_index(name='IDS'))
print (df)
   VALUE        IDS
0  row24  [1, 2, 8]
1   row1        [3]
2  row15        [4]
3  row16        [5]
4  row17     [6, 7]
5  row19        [9]

If need combination lists and scalars use GroupBy.agg with lambda function:

df =  (df.groupby('VALUE', sort=False)['ID']
        .agg(lambda x: list(x) if len(x) > 1 else x)
        .reset_index(name='IDS'))
print (df)
   VALUE        IDS
0  row24  [1, 2, 8]
1   row1          3
2  row15          4
3  row16          5
4  row17     [6, 7]
5  row19          9

Because ig aggregate only list get oalso one element lists:

df =  (df.groupby('VALUE', sort=False)['ID']
        .agg(list)
        .reset_index(name='IDS'))
print (df)
   VALUE        IDS
0  row24  [1, 2, 8]
1   row1        [3]
2  row15        [4]
3  row16        [5]
4  row17     [6, 7]
5  row19        [9]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文