pandas,按功能分组后的列名

时间:2014-09-23 18:43:28

标签: python pandas group-by

我有一个名为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列?

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,其中包含一些示例。