Pandas GroupBy查询

3
我有一个pandas中的数据框,如下所示:我的pandas数据框快照
现在我希望将数据框转换为下面的形式,其中基于排序后的日期值(%m/%d/%Y),每个customerid的属性“category”都被连接并以分隔符分隔。日期较早的顺序与相应的客户ID的category列表第一次出现的顺序相同。
所需/转换的数据框:所需/转换的数据框

同一客户的年龄可能不同,因为每行都有相关日期。在转换后的DataFrame中应该如何处理? - ALollz
@ALollz 年龄不会有差异。日期列应在最后删除。 - zavy mola
1个回答

1

首先通过to_datetime转换列,然后sort_values排序,最后使用join进行groupby

df['Date'] = pd.to_datetime(df['Date'], format='%m/%d/%Y')

df = (df.sort_values(['customerid','Age','Date'])
        .groupby(['customerid','Age'])['category']
        .agg(', '.join)
        .reset_index())
print (df)
   customerid  Age               category
0           1   10  Electronics, Clothing
1           2   25      Grocery, Clothing

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