2016-04-28 3 views
0
import pandas as pd 
index = pd.MultiIndex.from_tuples([(1,2, None), (1,2,3)]) 
print(index.get_level_values(2)) 

даетDataType панд мультииндексных

Int64Index ([нан, 3.0], DTYPE = 'float64')

Однако, я хотел бы получить

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

То есть, Pandas не должен автоматически изменять тип данных. Как я могу это сделать?

ответ

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') 
Смежные вопросы