gpt4 book ai didi

python - 为 pandas.DataFrame 复制 GROUP_CONCAT

转载 作者:IT老高 更新时间:2023-10-29 00:18:41 30 4
gpt4 key购买 nike

我有一个 pandas DataFrame df:

+------+---------+  
| team | user |
+------+---------+
| A | elmer |
| A | daffy |
| A | bugs |
| B | dawg |
| A | foghorn |
| B | speedy |
| A | goofy |
| A | marvin |
| B | pepe |
| C | petunia |
| C | porky |
+------+---------

我想找到或编写一个函数来返回一个 DataFrame,我将使用以下方法在 MySQL 中返回它:

SELECT
team,
GROUP_CONCAT(user)
FROM
df
GROUP BY
team

结果如下:

+------+---------------------------------------+  
| team | group_concat(user) |
+------+---------------------------------------+
| A | elmer,daffy,bugs,foghorn,goofy,marvin |
| B | dawg,speedy,pepe |
| C | petunia,porky |
+------+---------------------------------------+

我可以想到通过遍历行并添加到字典来执行此操作的讨厌方法,但必须有更好的方法。

最佳答案

执行以下操作:

df.groupby('team').apply(lambda x: ','.join(x.user))

获取 Series 字符串或

df.groupby('team').apply(lambda x: list(x.user))

获取 list 字符串的 Series

结果如下:

In [33]: df.groupby('team').apply(lambda x: ', '.join(x.user))
Out[33]:
team
a elmer, daffy, bugs, foghorn, goofy, marvin
b dawg, speedy, pepe
c petunia, porky
dtype: object

In [34]: df.groupby('team').apply(lambda x: list(x.user))
Out[34]:
team
a [elmer, daffy, bugs, foghorn, goofy, marvin]
b [dawg, speedy, pepe]
c [petunia, porky]
dtype: object

请注意,通常对这些类型的 Series 进行任何进一步的操作都会很慢并且通常不鼓励。如果有另一种聚合方法而不将 list 放在 Series 内,则应考虑改用该方法。

关于python - 为 pandas.DataFrame 复制 GROUP_CONCAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18138693/

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