python - 如何重新索引多索引 pandas 数据框?

标签 python pandas multi-index reindex

给定以下 pandas.core.frame.DataFrame,称为 sorted_by_diff :

In [10]:sorted_by_diff.head(4)

Out[10]:
           value
y          0         1          diff
variable            
george     1.265265  0.001550   1.263716
hp         0.895473  0.017479   0.877994
hpl        0.431994  0.009173   0.422822
re         0.415760  0.125091   0.290669

具有以下列:

In [11]: sorted_by_diff.columns
Out[11]:
MultiIndex(levels=[[u'value'], [0, 1, u'diff']],
           labels=[[0, 0, 0], [0, 1, 2]],
           names=[None, u'y'])

以及以下索引:

In [12]: sorted_by_diff.index

Out[12]:
Index([u'george', u'hp', u'hpl', u're', u'edu', u'meeting', u'650', u'85', u'lab', u'labs', u'1999', u'data', u'project', u'technology', u'pm', u'telnet', u'address', u'857', u'415', u'cs', u'original', u'(', u'conference', u'direct', u';', u'[', u'parts', u'table', u'will', u'report', u'#', u'make', u'people', u'receive', u'addresses', u'over', u'order', u'$', u'3d', u'internet', u'mail', u'font', u'money', u'credit', u'all', u'email', u'business', u'000', u'remove', u'our', u'!', u'free', u'your', u'you', u'length_average', u'length_longest', u'length_total'], dtype='object')

如何将 sort_by_diff 重新索引为这样?

           value
y          email     spam       diff
variable            
george     1.265265  0.001550   1.263716
hp         0.895473  0.017479   0.877994
hpl        0.431994  0.009173   0.422822
re         0.415760  0.125091   0.290669

即如何将索引级别0和1分别更改为“电子邮件”和“垃圾邮件”?

最佳答案

>>> sorted_by_diff.columns.set_levels([[u'value'], ['email', 'spam', 'diff']], inplace=True)
>>> sorted_by_diff
             value                    
y            email      spam      diff
variable                              
george    1.265265  0.001550  1.263716
hp        0.895473  0.017479  0.877994
hpl       0.431994  0.009173  0.422822
re        0.415760  0.125091  0.290669

关于python - 如何重新索引多索引 pandas 数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27634328/

相关文章:

python - 如何使用 read_sql_query (pandas 数据帧)指示多索引列

python - pandas多索引列标题在读取CSV文件时更改类型

python - 如何通过语法 TupleName.index() 查找嵌套元组元素的索引

python - Virtualenv 找不到导入的模块

python - 将整数列表转换为字符串列表

python - 将 pandas DataFrame 写入 unicode 文本文件时出现问题

python - 按列名拆分数据框中的多索引数据框

python - 为 Python 列表赋值不起作用?

python - 将 pandas DataFrame 中的多列映射到一列

python - Pandas:获取 2 个数据框列之间的最小值