多列的Groupby

Groupby of multiple Columns

我有

进程 助攻 日期
23d34 0 13.10.2020
23d4t 1 14.10.2020
56z45 3 13.10.2020
23d34 0 13.10.2020

我想按“进程”列的值对其进行分组。如果我使用这个函数:

df_new = df.groupby(['Process'])['Assists'].apply(lambda x: ','.join(x.astype(str))).reset_index()

看起来像这样

进程 助攻
23d34 0,0
23d4t 1
56z45 3

我的问题是,我仍然需要“日期”列才能在日期之后进行过滤。流程的“日期”必须相同。因此,将日期也“合并”或“分组”会很好。

我要

进程 助攻 日期
23d34 0,0 13.10.2020
23d4t 1 14.10.2020
56z45 3 13.10.2020

非常感谢。

如果您想按 Process Date 分组,请尝试:

df_new = df.groupby(["Process", "Date"], as_index=False)["Assists"].apply(
    lambda x: ",".join(x.astype(str))
)

print(df_new)

打印:

  Process        Date Assists
0   23d34  13.10.2020     0,0
1   23d4t  14.10.2020       1
2   56z45  13.10.2020       3

您可以使用聚合函数:minmaxfirstlast

df_new = df.astype({'Assists':'str'})
    .groupby('Process',as_index=False)
    .agg({'Assists':','.join,'Date':'min'}))