去除 pandas MultiIndex 索引列值中的空白
strip whitespace in pandas MultiIndex index columns values
我有一个混合数据类型的 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)
但这是一种迂回的方式,有没有更直接的方法来去除索引本身中的空格?
您可以使用 .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'])
与其他答案类似:
df.index.set_levels(df.index.map(lambda x: (x[0], x[1].strip())), inplace=True)
我有一个混合数据类型的 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)
但这是一种迂回的方式,有没有更直接的方法来去除索引本身中的空格?
您可以使用 .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'])
与其他答案类似:
df.index.set_levels(df.index.map(lambda x: (x[0], x[1].strip())), inplace=True)