我有一个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}})
答案 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