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

gibtDatentyp von Pandas Multiindex

Int64Index ([nan, 3,0], dtype = 'float64')

Allerdings würde ich

bekommen Int64Index ([nan, 3], dtype = 'Objekt')

Das heißt, Pandas sollten den Datentyp nicht automatisch ändern. Wie kann ich das machen?

Antwort

0

ich glaube, Sie Pegelwerte zu string von astype umwandeln kann, str.split es durch . und get ersten Wert. Dann erstellen Sie neu 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')