Ich versuche, eine Reihe in eine andere zu setzen, bei einem Multi-Index-Wert. Ich kann keinen Weg finden, dies in Pandas ohne komplexe Hacks zu tun.Werte in einer Pandas MultiIndex-Reihe einstellen
Meine Original-Serie:
one 1 0.522764
3 0.362663
7 0.963108
two 2 0.717855
4 0.004645
5 0.077471
Die Daten, die ich auf der Ebene verketten möchten three
:
2 0.8
7 0.9
8 0.7
Die gewünschte Ausgabe:
one 1 0.522764
3 0.362663
7 0.963108
two 2 0.717855
4 0.004645
5 0.077471
three 2 0.800000
7 0.900000
8 0.700000
Ich kann nicht eine elegante heraus Weg, dies in Pandas zu tun. Alles, was ich tun konnte bereits in dem folgenden Hack:
# imports
import numpy as np
import pandas as pd
# to replicate the Series:
np.arrays = [['one','one','one','two','two','two'],[1,3,7,2,4,5]]
my_series = pd.Series([np.random.random() for i in range(6)],
index=pd.MultiIndex.from_tuples(list(zip(*np.arrays))))
# the new data I need to add:
new_data = pd.Series({1: .9, 2: .7, 3: .8})
Hier ist, wie ich es bin derzeit zu lösen:
# rename the index so that I can call it later
new_data.index.name = 'level_1'
# turn it into temporary a dataframe so that I can add a new column
temp = pd.DataFrame(new_data)
# create a new column with the desired name for first index level
temp['level_0'] = 'three'
# reset index, set the new index, turn into Series again
temp = temp.reset_index().set_index(['level_0', 'level_1'])[0]
# append it to the larger dataframe
my_series = my_series.append(temp)
Dies ergibt die gewünschte Ausgabe.
Frage: Gibt es eine einfache, elegante Möglichkeit, dies in Pandas zu tun?
Ihre Notation ist ein wenig verwirrend, weil 'df' kein Datenrahmen ist ... – C8H10N4O2
bezogen werden: https://stackoverflow.com/questions/18062135/combining-two-series-into-a-dataframe- In-Pandas? – C8H10N4O2
@ C8H10N4O2 gut gefangen, behoben –