Учитывая DataFrame с многоиндексированными столбцами
import pandas as pd
fish = [("Fish", lli) for lli in ["One", "Two"]]
dogs = [("Dog", lli) for lli in ["Three", "Four", "Five"]]
cats = [("Cat", lli) for lli in ["Three", "Four", "Five"]]
df = pd.DataFrame(index=["Blue", "Green", "Red"], columns=pd.MultiIndex.from_tuples(fish+dogs+cats))
-
df =
Fish Dog Cat
One Two Three Four Five Three Four Five
Blue NaN NaN NaN NaN NaN NaN NaN NaN
Green NaN NaN NaN NaN NaN NaN NaN NaN
Red NaN NaN NaN NaN NaN NaN NaN NaN
Теперь я хотел бы установить значения двух столбцов в в то же время, например
df.loc[:, ('Dog', ['Four', 'Five'])] = 3.1
Это приводит к тому, что KeyError говорит:
KeyError: 'MultiIndex Slicing requires the index to be fully lexsorted tuple len (2), lexsort depth (0)'
Проблема может быть «решена» путем сортировки столбцов перед установкой значений с помощью
df = df.sort_index(axis=1)
Теперь проблема в том, что я не хочу сортировать столбцы, поскольку они уже отсортированы таким образом, чтобы отражать желаемый результат. Есть ли способ установить значения нескольких столбцов без предварительной сортировки?