Werte in einem Pandas Multi-Index ersetzen
Ich habe einen Datenrahmen mit einem Multi-Index. Ich möchte den Wert des 2. Index ändern, wenn bestimmte Bedingungen für den ersten Index erfüllt sind. Ich habe hier eine ähnliche (aber andere) Frage gefunden:Einen Wert in MultiIndex (Pandas) ersetzen, das meinen Punkt nicht beantwortet, da es sich um das Ändern einer einzelnen Zeile handelte und die Lösung auch den Wert des ersten Indexes übergab (der nicht geändert werden musste). In meinem Fall habe ich es mit mehreren Zeilen zu tun, und ich konnte diese Lösung nicht an meinen Fall anpassen.
Ein minimales Beispiel meiner Daten ist unten. Vielen Dank
import pandas as pd
import numpy as np
consdf=pd.DataFrame()
for mylocation in ['North','South']:
for scenario in np.arange(1,4):
df= pd.DataFrame()
df['mylocation'] = [mylocation]
df['scenario']= [scenario]
df['this'] = np.random.randint(10,100)
df['that'] = df['this'] * 2
df['something else'] = df['this'] * 3
consdf=pd.concat((consdf, df ), axis=0, ignore_index=True)
mypiv = consdf.pivot('mylocation','scenario').transpose()
level_list =['this','that']
# if level 0 is in level_list --> set level 1 to np.nan
mypiv.iloc[mypiv.index.get_level_values(0).isin(level_list)].index.set_levels([np.nan], level =1, inplace=True)
Die letzte Zeile funktioniert nicht: Ich bekomme:
ValueError: On level 1, label max (2) >= length of level (1). NOTE: this index is in an inconsistent state