Pandas:按列分组,将列表行合并为组的单个列?

6

我有一个Pandas数据框,长这样:

import pandas as pd

f1 = [['abc', 'def'], ['ghi', 'jkl'], ['mno', 'pqr'], ['stu', 'vwx'], ['yz', 'xx'], ['yx', 'zx'], ['text', 'more'], ['stuff', 'here'], ['last', 'one']]

f2 = ['1', '1', '1', '2', '2', '2', '3', '3', '3']

groups = ['GROUP A', 'GROUP A', 'GROUP A', 'GROUP B', 'GROUP B', 'GROUP B', 'GROUP C', 'GROUP C', 'GROUP C']


df = pd.DataFrame({'Groups': groups, 'Feature 1': f1, 'Feature 2': f2})
df


# DataFrame print:
    Groups    Feature 1   Feature 2
0   GROUP A   [abc, def]      1
1   GROUP A   [ghi, jkl]      1
2   GROUP A   [mno, pqr]      1
3   GROUP B   [stu, vwx]      2
4   GROUP B   [yz, xx]    2
5   GROUP B   [yx, zx]    2
6   GROUP C   [text, more]    3
7   GROUP C   [stuff, here]   3
8   GROUP C   [last, one]     3

我正在尝试按"Group"列对数据进行分组,以便生成如下的数据框架:
Groups      Feature 1                                Feature 2
GROUP A     [abc, def, ghi, jkl, mno, pqr]           1
GROUP B     [stu, vwx, yz, xx, yx, zx]               2
GROUP C     [text, more, stuff, here, last, one]     3

换句话说,我的群组在“群组”列中重复出现,并且每个重复都对应于属于该组的单个列表。
我想消除“群组”列中多个重复的群组,并将与每个组相关联的所有单个列表合并为一个包含单行中所有元素的合并列表。
我已经尝试了一些groupby()方法并进行了搜索,但我无法实现。
谢谢!
1个回答

4

您可以使用sum在包含列表的列上进行GroupBy和聚合,以将组内的列表连接起来,还可以使用firstFeature 2上进行操作:

df.groupby('Groups').agg({'Feature 1':'sum', 'Feature 2':'first'}).reset_index()

   Groups                        Feature 1          Feature 2
0  GROUP A        [abc, def, ghi, jkl, mno, pqr]         1
1  GROUP B            [stu, vwx, yz, xx, yx, zx]         2
2  GROUP C  [text, more, stuff, here, last, one]         3
​

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接