Pandas Multiindex的DataType

时间:2016-04-28 08:38:48

标签: python pandas

import pandas as pd
index = pd.MultiIndex.from_tuples([(1,2, None), (1,2,3)])
print(index.get_level_values(2))

给出

  

Int64Index([nan,3.0],dtype ='float64')

但是,我想得到

  

Int64Index([nan,3],dtype ='object')

也就是说,Pandas不应该自动更改数据类型。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我认为您可以将string的级别值转换为astype,将str.split转换为.get第一个值。然后创建新的MultiIndex

#change multiindex
new = zip(index.get_level_values(0),
          index.get_level_values(1),
          index.get_level_values(2).astype(str).str.split('.').str.get(0))


new_index = pd.MultiIndex.from_tuples(new)
print (new_index)
MultiIndex(levels=[[1], [2], [u'3', u'nan']],
           labels=[[0, 0], [0, 0], [1, 0]])

print(new_index.get_level_values(2))
Index([u'nan', u'3'], dtype='object')