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不应该自动更改数据类型。我怎么能这样做?
答案 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')