如果很少的列相同,然后在熊猫中将行值添加在一起

发布于 2025-02-13 03:16:38 字数 831 浏览 2 评论 0原文

以下是细节

是数据框架

Name| Filename| delimetier| good delimeter| bad delimeter
A     123       48         a                A
A     123       48                          A
B     123       48         b                C
C     123       49         c                B
A     123       48         d                D
A     123       48         c                E
B     123       48         d                F

我想要的是

Name| Filename| delimetier| good delimeter| bad delimeter
A     123       48         a, c, d          A, D, E
B     123       48         b, d             C, F
C     123       49         c                B

即使有无效的价值和重复,也忽略了它们。而且我尝试使用groupby()来解决它,但失败了。

The following are the details

Here is the data frame

Name| Filename| delimetier| good delimeter| bad delimeter
A     123       48         a                A
A     123       48                          A
B     123       48         b                C
C     123       49         c                B
A     123       48         d                D
A     123       48         c                E
B     123       48         d                F

What I want is

Name| Filename| delimetier| good delimeter| bad delimeter
A     123       48         a, c, d          A, D, E
B     123       48         b, d             C, F
C     123       49         c                B

Even there have null value and duplicates, ignore them. And I have tried use groupby() to solve it, but failed.

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

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

发布评论

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

评论(1

花开柳相依 2025-02-20 03:16:38

您可以使用groupby.apply来实现此结果。

使用此数据:

>>> df
  Name  Filename  delimeter good delimeter
0    A       123         48              a
1    B       123         48              b
2    C       123         49              c
3    A       123         48              d
4    A       123         48              c
5    B       123         48              d

解决方案

out = (
    df.groupby(['Name', 'Filename', 'delimeter'], as_index=False)
    ['good delimeter'].apply(', '.join)
)

print(out)
  Name  Filename  delimeter good delimeter
0    A       123         48        a, d, c
1    B       123         48           b, d
2    C       123         49              c

You can use a groupby.apply to achieve this result.

Using this data:

>>> df
  Name  Filename  delimeter good delimeter
0    A       123         48              a
1    B       123         48              b
2    C       123         49              c
3    A       123         48              d
4    A       123         48              c
5    B       123         48              d

Solution

out = (
    df.groupby(['Name', 'Filename', 'delimeter'], as_index=False)
    ['good delimeter'].apply(', '.join)
)

print(out)
  Name  Filename  delimeter good delimeter
0    A       123         48        a, d, c
1    B       123         48           b, d
2    C       123         49              c
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文