【发布时间】:2020-05-19 21:02:57
【问题描述】:
我有一个带有 MultiIndex 的 pandas DataFrame,我正在寻找一种快速的方法来修改我的一个 MultiIndex 级别的子集以用于某些级别。这是一个示例,我需要更改 2 个索引 (0, 10) 和 (9, 25) 并更改它们的“结束”级别。
import pandas as pd
# Make up some data
data = pd.DataFrame({
'start': [0, 12, 9, 24],
'end': [10, 20, 25, 32],
'col1': ['a', 'b', 'a', 'd'],
'col2': [1, 1, 2, 2]
}).set_index(['start', 'end'])
# Idx to change for the "end" level
idx_to_change = {(0, 10), (9, 25)}
### A cumbersome way to do it ###
data.reset_index(inplace=True)
subset = [True if (s, t) in idx_to_change else False for (s, t, _, _) in data.values]
data.loc[subset, 'end'] += 10
# Update the data
data.set_index(['start', 'end'], inplace=True)
如您所见,更改某些索引需要一点代码(而且可能特别慢)。你知道更好的方法吗?
感谢您的帮助
【问题讨论】:
标签: python pandas multi-index