使用分层索引更改数据框中的数据

Rob*_*ith 7 python hierarchical pandas

如何使用层次索引更改DataFrame中的每个元素?例如,也许我想将字符串转换为浮点数:

from pandas import DataFrame
f = DataFrame({'a': ['1,000','2,000','3,000'], 'b': ['2,000','3,000','4,000']})
f.columns = [['level1', 'level1'],['item1', 'item2']]
f
Out[152]:
        level1
     item1   item2
0    1,000   2,000
1    2,000   3,000
2    3,000   4,000
Run Code Online (Sandbox Code Playgroud)

我试过这个:

def clean(group):
    group = group.map(lambda x: x.replace(',', ''))
    return group
f.apply(clean)
Out[153]:
(level1, item1) (level1, item2)
0    1000    2000
1    2000    3000
2    3000    4000
Run Code Online (Sandbox Code Playgroud)

如您所见,它会更改层次索引.我怎么能避免这个?或者也许有更好的方法.

谢谢

Zel*_*ny7 4

axis选项传递给apply函数:

In [265]: f.apply(clean, axis=1)
Out[265]:
  level1
   item1 item2
0   1000  2000
1   2000  3000
2   3000  4000
Run Code Online (Sandbox Code Playgroud)

当两个轴都有分层索引时,这是一个解决方法:

In [316]: f.index = [[1,2,3],[1,2,3]]

In [317]: f
Out[317]:
    level1
     item1  item2
1 1  1,000  2,000
2 2  2,000  3,000
3 3  3,000  4,000

In [314]: f.apply(clean, axis=1).reindex(f.index)
Out[314]:
    level1
     item1 item2
1 1   1000  2000
2 2   2000  3000
3 3   3000  4000
Run Code Online (Sandbox Code Playgroud)