Ich habe zwei Serien s1
und s2
mit den gleichen (nicht aufeinander folgenden) Indizes. Wie kann ich kombinieren s1
und s2
zwei Spalten in einem Datenrahmen und halten als dritte Säule einer der Indizes zu sein?
277
Ich denke, das concat
ist ein guter Weg, dies zu tun. Wenn sie vorhanden sind, werden die Namensattribute der Serie als Spalten verwendet (andernfalls werden sie einfach nummeriert):
In [1]: s1 = pd.Series([1, 2], index=['A', 'B'], name='s1')
In [2]: s2 = pd.Series([3, 4], index=['A', 'B'], name='s2')
In [3]: pd.concat([s1, s2], axis=1)
Out[3]:
s1 s2
A 1 3
B 2 4
In [4]: pd.concat([s1, s2], axis=1).reset_index()
Out[4]:
index s1 s2
0 A 1 3
1 B 2 4
Hinweis: Dies erstreckt sich auf mehr als 2 Serien.
pd.concat([list_of_dataframes])
anstatt es viele Malenew_df = pd.DataFrame(); for df in list_of_dsf: new_df = pd.concat([new_df, df])
oder ähnliches zu konzertieren .Warum verwenden Sie nicht einfach .to_frame, wenn beide dieselben Indizes haben?
> =
v0.23
<
v0.23
quelle
Pandas werden diese übergebenen automatisch in Reihe ausrichten und den gemeinsamen Index erstellen. Sie sind hier zufällig gleich.
reset_index
verschiebt den Index in eine Spalte.quelle
Beispielcode:
Mit Pandas können Sie ein
DataFrame
aus einemdict
mitSeries
als Werte und den Spaltennamen als Schlüssel erstellen . Wenn aSeries
als Wert gefunden wird, wird derSeries
Index als Teil desDataFrame
Index verwendet. Diese Datenausrichtung ist einer der Hauptvorteile von Pandas. Folglich hat der frisch erstellteDataFrame
Wert , sofern Sie keine anderen Anforderungen haben, einen doppelten Wert. Im obigen Beispieldata['idx_col']
hat die gleichen Daten wiedata.index
.quelle
Wenn ich das beantworten darf.
Die Grundlagen für die Konvertierung von Serien in Datenrahmen sind, dies zu verstehen
1. Auf konzeptioneller Ebene ist jede Spalte im Datenrahmen eine Reihe.
2. Und jeder Spaltenname ist ein Schlüsselname, der einer Reihe zugeordnet ist.
Wenn Sie mehr als zwei Konzepte berücksichtigen, können Sie sich viele Möglichkeiten vorstellen, Serien in Datenrahmen zu konvertieren. Eine einfache Lösung lautet wie folgt:
Erstellen Sie hier zwei Serien
Erstellen Sie einen leeren Datenrahmen mit nur den gewünschten Spaltennamen
Fügen Sie den Serienwert mithilfe des Mapping-Konzepts in den Datenrahmen ein
Überprüfen Sie jetzt die Ergebnisse
quelle
Sie sind sich nicht sicher, ob ich Ihre Frage vollständig verstehe, aber möchten Sie dies tun?
(
index=s1.index
ist hier nicht mal nötig)quelle
Eine Vereinfachung der Lösung basierend auf
join()
:quelle
Ich habe Pandas verwendet, um mein Numpy-Array oder meine Zahlen in einen Datenrahmen zu konvertieren. Dann habe ich die zusätzliche Spalte nach Schlüssel als 'Vorhersage' hinzugefügt und hinzugefügt. Wenn Sie einen Datenrahmen benötigen, der zurück in eine Liste konvertiert wurde, verwenden Sie values.tolist ()
quelle