2016-10-13 8 views
0

У меня есть мультииндексный формат данных типов данных mix. Одно из значений столбцов индекса имеет завершающие пробелы. Как я могу разделить эти конечные пробелы для столбцов индекса. здесь пример кода:Пробел полосы в pandas Значения столбцов индекса MultiIndex

import pandas as pd 
idx = pd.MultiIndex.from_product([['1.0'],['NY ','CA ']], names=['country_code','state']) 
df = pd.DataFrame({'temp':['78','85']},index = idx) 

Одним из решений является сбросить индекс, лишить пробельные для нужного столбца и снова установить индекс. Что-то, как показано ниже:

df = df.reset_index() 
df['state'] = df['state'].str.strip() 
df = df.set_index(['country_code','state'],drop=True) 

но это окольный путь, есть более прямой способ лишить пробельные в самом индексе?

ответ

1

Вы можете использовать .index.set_levels() и .index.get_level_values() манипулировать индексом на определенном уровне:

df.index.set_levels(df.index.get_level_values(level = 1).str.strip(), 
        level = 1, inplace=True) 

df.index 
# MultiIndex(levels=[['1.0'], ['NY', 'CA']], 
#   labels=[[0, 0], [1, 0]], 
#   names=['country_code', 'state']) 
1

Подобно другой ответ:

df.index.set_levels(df.index.map(lambda x: (x[0], x[1].strip())), inplace=True) 

 Смежные вопросы

  • Нет связанных вопросов^_^