Python 对数据帧进行分组

Python 对数据帧进行分组,python,pandas,Python,Pandas,有人能分享一下他们是如何对以下数据帧进行分组的吗? 当我尝试这样做时,我最终会摆弄groupby、stacks和lambda函数,但从未真正做到这一点。文档中的哪些方法和示例对我正在尝试的工作很有帮助,这一点并不明显 这些东西会随着经验变得更直观吗?感谢任何关于如何选择和更流利地使用Pandas函数的提示或建议 以下是虚拟数据: df = pd.DataFrame({'A':[11,11,11,12,12,12],'B':[4,5,6,3,11,12]}) A B 0 11 4 1

有人能分享一下他们是如何对以下数据帧进行分组的吗? 当我尝试这样做时,我最终会摆弄groupby、stacks和lambda函数,但从未真正做到这一点。文档中的哪些方法和示例对我正在尝试的工作很有帮助,这一点并不明显

这些东西会随着经验变得更直观吗?感谢任何关于如何选择和更流利地使用Pandas函数的提示或建议

以下是虚拟数据:

df = pd.DataFrame({'A':[11,11,11,12,12,12],'B':[4,5,6,3,11,12]})

   A  B
0  11  4
1  11  5
2  11  6
3  12  3
4  12  11
5  12  12
我想表明,一列中的每个原始值都与第二列中的值位于一个组中。(从下面第2组中删除的第二列中的第12个副本)

最后,要使生成的数据帧具有A列中的值,并将组添加为列表和编号:

Col_A   Grouped_values  Group_name
11      [11,4,5,6,12]     Group 1
12      [12,3,11]         Group 2

谢谢你的帮助

IIUC需要将
A
的值转换为
set
,然后将groupby和转换后的
B
值添加到
s
,并返回到
列表
s,最后添加
组名
列:

s = set(list(df['A']))
print (s)
{11, 12}

df = df.groupby('A')['B'].apply(lambda x: list(set(x) | s)).reset_index()
#thanks asongtoruin for better solution
df['Group_name'] = 'Group ' + (df.index + 1).astype(str)
print (df)
    A                  B Group_name
0  11  [12, 11, 4, 5, 6]     Group1
1  12        [11, 3, 12]     Group2

我不太明白为什么
11
12
会出现在您的
第一组
列表中。你能澄清一下吗?在没有完全理解目标的情况下,你是否尝试过类似于
df.groupby('A')['B']).apply(set)
聚合的逻辑不清楚。分组值在你的预期输出中是虚假的。我同意,当我手动将12添加到组1时,我有点破坏了逻辑。但我要做的是把两列中的数字分组。在原始数据帧的第4行中,12和11是在一起的,所以我想确保在两个结果组中都显示了这种关系。这会让事情变得明朗一点吗?为什么不
df['Group_name']='Group'+(groups.index+1).astype(str)
?@Kdog-glady可以帮助:)
s = set(list(df['A']))
print (s)
{11, 12}

df = df.groupby('A')['B'].apply(lambda x: list(set(x) | s)).reset_index()
#thanks asongtoruin for better solution
df['Group_name'] = 'Group ' + (df.index + 1).astype(str)
print (df)
    A                  B Group_name
0  11  [12, 11, 4, 5, 6]     Group1
1  12        [11, 3, 12]     Group2