Python,Pandas Dataframe 在分组后取回索引

Posted

技术标签:

【中文标题】Python,Pandas Dataframe 在分组后取回索引【英文标题】:Python, Pandas Dataframe get the index back after a group by 【发布时间】:2015-01-26 19:57:47 【问题描述】:

我有一个名为“class_price_df”的 Pandas 数据框:

                           email                   cat           class
0               trangthanhtin@yahoo.com     Mobiles & Tablets      1
1                    concomai@yahoo.com     Mobiles & Tablets      4
2                   yenvo.ier@gmail.com     Mobiles & Tablets      2
3                   quyenvy71@yahoo.com     Mobiles & Tablets      4

我按“电子邮件”和“猫”分组以获得最大“类”:

class_price_df = class_price_df.groupby(['email','cat']).max().unstack('cat').fillna(0)

但是输出是:

cat                               Computers & Laptops  Consumer Electronics   
email                                                                         
+coicon7879@gmail.com                               2                     0   
+haiphong82lk@yahoo.com                             0                     2   
+nguyentrungchanhbd@gmai.com                        0                     0   
-abc@gmail.com                                      0                     0   
001kukuku@gmail.com                                 0                     4   
002pnk@gmail.com                                    1                     0   
007.heineken@gmail.com                              4                     0   
007.leson@gmail.com                                 0                     0   

我怎样才能找回我的“索引”并获得类似于以下内容的输出:

                email                 Computers & Laptops        Consumer Electronics
0      +coicon7879@gmail.com                   2                             0  
1      +haiphong82lk@yahoo.com                 0                             2 
2      +nguyentrungchanhbd@gmai.com            0                             0   
3      -abc@gmail.com                          0                             4

【问题讨论】:

【参考方案1】:

只需使用reset_index 方法:

class_price_df.reset_index(inplace=True)

【讨论】:

谢谢,但是当我在做 class_price_df.columns 时,我有 MultiIndex(levels=[[u'class', u'email'], [u'Automotive & Gadgets', u'Cameras' , u'Computers & Laptops'.......) 我怎样才能得到 Index([u'email', u'Automotive & Gadgets', u'Cameras', u'Computers & Laptops'..... ....) ? @user1754181 您可以在调用 reset_index 时使用 int 或字符串名称指定级别:pandas.pydata.org/pandas-docs/stable/generated/… 例如 class_price_df.reset_index(inplace=True, level='class') 感谢@EdChum,但我仍然有 MultiIndex(levels=[[u'class', u'email'], [u'Automotive & Gadgets', u'Cameras', u'Computers & Laptops '

以上是关于Python,Pandas Dataframe 在分组后取回索引的主要内容,如果未能解决你的问题,请参考以下文章

python:pandas之DataFrame取行列(df.loc(),df.iloc())以及索引

Python Pandas -- DataFrame

Python数据分析pandas之dataframe初识

Pandas DataFrame 作为函数的参数 - Python

python pandas-->删除DataFrame某行或某列

python 在Pandas DataFrame中查找连续日期组