熊猫适用于指数

时间:2018-06-21 06:19:46

标签: pandas

我有一个df,其中包含一些列和带有字节数据类型的多索引。清理我可以做的列

You cant add a WebMethod to a webpart. A webpart is a server control and outputs html to the page.

并且对于单个索引应该有效

for c in df.columns:
    df[c] = df[c].apply(lambda x: x.decode('UTF-8'))

但是使用多索引似乎失败了。我可以为多索引做些类似的事情吗?

编辑: 例子

df.index.map(lambda x: x.decode('UTF-8'))

以及所需的输出

pd.DataFrame().from_dict({'val': {(b'A', b'a'): 1,
  (b'A', b'b'): 2,
  (b'B', b'a'): 3,
  (b'B', b'b'): 4,
  (b'B', b'c'): 5}})

2 个答案:

答案 0 :(得分:2)

方法1:

df.index = pd.MultiIndex.from_tuples([(x[0].decode('utf-8'), x[1].decode('utf-8')) for x in df.index])

%timeit结果:1000 loops, best of 3: 573 µs per loop

方法2:

df.reset_index().set_index('val').applymap(lambda x: x.decode('utf-8')).reset_index().set_index(['level_0', 'level_1'])

%timeit结果:100 loops, best of 3: 4.17 ms per loop

答案 1 :(得分:2)

df.index.levels = ([ names.map(lambda x: x.decode('UTF-8')) for i, names in enumerate(df.index.levels)])

输出:

        val
A   a   1
    b   2
B   a   3
    b   4
    c   5