修改Pandas中MultiIndex数据帧中的重复子索引

时间:2016-08-24 12:40:05

标签: python pandas dataframe multi-index removing-whitespace

嗨我有一个数据帧切片如下:

|            |          | Lemon | Orange |
|------------|----------|-------|--------|
| Date       | Location |       |        |
| 01/01/2016 | Park     | 10    | 20     |
| 01/01/2016 | Beach    | 5     | 15     |
| 01/01/2016 | Park     | 2     | 4      |
| 02/01/2016 | Park     | 8     | 3      |

正如您所看到的,(01/01/2016, Park)存在重复,原因是第3个条目在公园中的k之后有一个空格。我在有限的索引选择技能方面遇到困难,在整个“位置”列上执行rstrip(" ")以避免出现空格错误。

最终,我希望能够使groupby函数可视化Park与其他位置之间的数据。目前,"Park""Park "是两个不同的位置。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

指数是不可变的,因此如果您想更改index标签,则需要设置新的index(感谢IanS)。

您可以在str.strip的第二级选择中使用get_level_values

new_index = list(zip(df.index.get_level_values('Date'),
                     df.index.get_level_values('Location').str.strip()))

df.index = pd.MultiIndex.from_tuples(new_index, names = df.index.names)

print (df.index)
MultiIndex(levels=[[2016-01-01 00:00:00, 2016-02-01 00:00:00], ['Beach', 'Park']],
           labels=[[0, 0, 0, 1], [1, 0, 1, 1]],
           names=['Date', 'Location'])

如果您想使用rstrip,请将str.strip替换为str.rstrip