在pandas MultiIndex索引列值中删除空格

时间:2016-10-13 23:24:52

标签: python string pandas multi-index

我有一个混合数据类型的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)

但这是一种迂回的方式,是否有更直接的方法去除索引本身的空白?

2 个答案:

答案 0 :(得分: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 :(得分:1)

与其他答案类似:

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