So führen Sie eine Serie und DataFrame
Wenn Sie hierher gekommen auf der Suche nach Informationen über , wie
führen Sie eineDataFrame
undSeries
auf dem index, schauen Sie bitte in diese
Antwort.Die OP ' s ursprüngliche Absicht war, zu Fragen zuweisen Serie Elemente
als Spalten zu einer anderen DataFrame. Wenn Sie daran interessiert sind, die
Antwort auf diese, Blick auf die akzeptierte Antwort von EdChum.
Besten, die ich mit oben kommen kann ist
df = pd.DataFrame({'a':[1, 2], 'b':[3, 4]}) # see EDIT below
s = pd.Series({'s1':5, 's2':6})
for name in s.index:
df[name] = s[name]
a b s1 s2
0 1 3 5 6
1 2 4 5 6
Kann jemand empfehlen, eine bessere syntax /schnellere Methode?
Meine versuche:
df.merge(s)
AttributeError: 'Series' object has no attribute 'columns'
und
df.join(s)
ValueError: Other Series must have a name
BEARBEITEN Die ersten zwei Antworten markiert ein problem mit meiner Frage, so nutzen Sie bitte das folgende Konstrukt df
:
df = pd.DataFrame({'a':[np.nan, 2, 3], 'b':[4, 5, 6]}, index=[3, 5, 6])
dem abschließenden Ergebnis
a b s1 s2
3 NaN 4 5 6
5 2 5 5 6
6 3 6 5 6
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnte man konstruieren Sie einen dataframe aus der Serie und dann verschmelzen Sie mit der dataframe.
So geben Sie die Daten als Werte sondern multiplizieren Sie Sie durch die Länge, legen Sie die Spalten für den index und set-params für die left_index und right_index zu Wahren:
BEARBEITEN für die situation, wo Sie möchten, dass der index konstruiert df aus der Serie zu verwenden, den index der df dann können Sie Folgendes tun:
Dies setzt Voraus, dass die Indizes der Länge entsprechen.
Update
Von v0.24.0 ab, führen Sie auf DataFrame und die Serie so lange wie die Serie benannt ist.
Heute, können Sie einfach konvertieren Sie die Serie zu einem DataFrame mit to_frame(). Also (wenn der Beitritt auf den index):
df
unds
diese Antwort gibt für mich eine leere dataframe, nicht das Ergebnis angeforderte in Frage. Wir wollen nicht auf entsprechen-index; wir übertragen wollen, dies
Werte für alle Zeilen derdf
.Hier ist eine Möglichkeit:
Zu brechen, was hier passiert...
pd.DataFrame(s).T
erstellt ein ein-Zeilen-DataFrame auss
die wie folgt aussieht:Weiter
join
verkettet diesen neuen Rahmen mitdf
:Schließlich die
NaN
Werte mit index 1 sind gefüllt mit den vorherigen Werten in der Spalte mitfillna
mit der vorwärts-fill (ffill
) argument:Zu vermeiden, mit
fillna
es ist möglich,pd.concat
wiederholen Sie die Zeilen des DataFrame konstruiert auss
. In diesem Fall die Allgemeine Lösung ist:Hier ist eine andere Lösung, die die Indexierung Herausforderung in der bearbeiteten Frage:
s
verwandelt sich in einen DataFrame durch Wiederholung die Werte und Umformen (Angabe 'Fortran' um), und auch die übergabe in die entsprechende Spalte ein Namen-und Stichwortverzeichnis. Diese neuen DataFrame wird dann verbunden, umdf
.NaN
Werte.index=[3, 5]
die neuen Spalten enthalten, die nan ' s nach Ihrem Befehl.2
sein solltelen(df)
im Allgemeinen anwendbar.ValueError: Shape of passed values is (2, 2), indices imply (2, 3)
wenn ich versuche, und führen Sie diese.Wenn ich könnte Ihnen die Einrichtung Ihres dataframes wie diese (auto-Indizierung):
dann können Sie Ihre s1 und s2 die Werte so (mit Form - () Rückgabe der Anzahl der Zeilen von df):
dann das Ergebnis das Sie wollen, ist einfach:
Alternativ, fügen Sie einfach die neuen Werte an Ihre dataframe df:
Beide zurück:
Wenn Sie eine andere Liste von Daten (anstelle von nur einem einzigen Wert zu gelten), und Sie wissen, es ist in der gleichen Reihenfolge wie df, eg:
dann können Sie dies in der gleichen Weise:
gibt:
Können Sie ganz einfach einen Pandabären.DataFrame Spalte, um eine Konstante. Diese Konstante kann ein int, wie in deinem Beispiel. Wenn die Spalte, die Sie angeben, ist nicht in der df, dann pandas wird, erstellen Sie eine neue Spalte mit dem Namen, den Sie angeben. So, nachdem Ihr dataframe errichtet wird, ist (aus deiner Frage):
Führen Sie einfach:
Könnten Sie schreiben, eine Schleife oder Verständnis zu machen, tun Sie dies für alle Elemente in einer Liste von Tupeln, oder von Schlüsseln und Werten in einem dictionary-je nachdem, wie Sie Ihre echte Daten gespeichert.