替换列和多索引上的Pandas DataFrame值

时间:2013-10-02 10:04:53

标签: python statistics pandas dataframe multi-index

我有一个带有分层索引的Pandas数据帧。它完全由整数(和可能的NaN)组成。对于索引中的每个级别,对于某些列,我有一个字典,将每个整数映射到不同的字符串,我想要使用字符串而不是列来呈现数据帧。我正在测试代码,如下所示:

import pandas as pd
import numpy as np
mappings = {'ace': {0:'a', 1:'b', 2:'c', 3:'d', 4:'e'},
            'algo': {0:'x', 1:'y', 2:'z', 3:'w', 4:'v'},
            'lucky': {0:'str0', 1:'str1', 2:'str2', 3:'str3', 4:'str4'}}
df = pd.DataFrame( np.random.randint(0, 5, (100, 5)), 
                   columns=('ace', 'spade', 'lucky', 'algo', 'boo') )
_a = df.set_index(['ace', 'algo'])
_b = df.groupby(['ace', 'algo']).size()
groups_small = _b[_b <= _b.quantile(0.7)].index
df_out = _a.drop(groups_small)

例如,如果df_out是:

          spade  lucky  boo
ace algo
0   1         3      0    0
    4         0      0    1
1   4         0      4    3
3   3         1      4    4
    3         2      1    1
2   0         0      3    1
0   4         2      2    1
    1         0      4    2
    1         3      3    3

我希望将其转化为:

          spade  lucky  boo
ace algo
a   y         3   str0    0
    v         0   str0    1
b   v         0   str4    3
d   w         1   str4    4
    w         2   str1    1
c   x         0   str3    1
a   v         2   str2    1
    y         0   str4    2
    y         3   str3    3

通过mappings。我必须执行哪些操作?

0 个答案:

没有答案