1

階層インデックスを持つ 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。どの操作を実行する必要がありますか?

4

0 に答える 0