有人可以分享他们如何分组以下数据框吗? 当我尝试这样做时,我最终摆弄了groupbys,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)
Group 1: [11,4,5,6,12]
Group 2: [12,3,11]
最后,为了使结果数据框具有A列中的值,并将这些组添加为列表并编号:
Col_A Grouped_values Group_name
11 [11,4,5,6,12] Group 1
12 [12,3,11] Group 2
感谢您的帮助!
答案 0 :(得分:1)
IIUC需要将A
的值转换为set
,然后将groupby和转换的B
值添加到s
并转换回list
s,最后添加Group_name
列:
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