我有一个名为purchase_cat_df的简单Pandas Dataframe:
email cat
0 email1@gmail.com Mobiles & Tablets
1 email2@gmail.com Mobiles & Tablets
2 email1@gmail.com Mobiles & Tablets
3 email3@gmail.com Mobiles & Tablets
4 email3@gmail.com Home & Living
5 email1@gmail.com Home & Living
我按照电子邮件分组#39;然后把'猫'和#39;在这样的列表中:
test = purchase_cat_df.groupby('email').apply(lambda x: list(x.cat))
但我的DataFrame测试是:
email
email1@gmail.com [Mobiles & Tablets, Mobiles & Tablets, Home & ...
email2@gmail.com [Mobiles & Tablets]
email3@gmail.com [Mobiles & Tablets, Home & Living]
我丢失了索引和名称,如何命名第2列?
答案 0 :(得分:3)
如果你想保留原始索引,你可能正在寻找这样的东西:
purchase_cat_df.groupby('email', as_index=False)
as_index = False保留原始索引。然后,您可以继续按名称对该列进行寻址。
答案 1 :(得分:0)
正如评论中提到的@BrenBarn一样,带有列表的列没有名称,因为您有一个Series
,而不是DataFrame
。
试试这个:
test = purchase_cat_df.groupby('email').apply({'cat': list})
返回DataFrame
,其中email
设置为索引,cat
作为新列的名称。
如果要聚合多个列,也可以使用此选项。请参阅the documentation,其中包含一些示例。