У меня есть pandas DataFrame с MultiIndex, и я ищу быстрый способ изменить подмножество одного из моих уровней 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)
Как видите, это занимает немного кода, чтобы изменить некоторые индексы (и это может быть особенно медленно). Знаете ли вы о лучшем способе сделать это?
Спасибо за вашу помощь