Antworten:
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 Male new_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
a.to_frame().join(b)
< v0.23
a.to_frame().join(b.to_frame())
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.
In [2]: s1 = Series(randn(5),index=[1,2,4,5,6])
In [4]: s2 = Series(randn(5),index=[1,2,4,5,6])
In [8]: DataFrame(dict(s1 = s1, s2 = s2)).reset_index()
Out[8]:
index s1 s2
0 1 -0.176143 0.128635
1 2 -1.286470 0.908497
2 4 -0.995881 0.528050
3 5 0.402241 0.458870
4 6 0.380457 0.072251
Beispielcode:
a = pd.Series([1,2,3,4], index=[7,2,8,9])
b = pd.Series([5,6,7,8], index=[7,2,8,9])
data = pd.DataFrame({'a': a,'b':b, 'idx_col':a.index})
Mit Pandas können Sie ein DataFrame
aus einem dict
mit Series
als Werte und den Spaltennamen als Schlüssel erstellen . Wenn a Series
als Wert gefunden wird, wird der Series
Index als Teil des DataFrame
Index verwendet. Diese Datenausrichtung ist einer der Hauptvorteile von Pandas. Folglich hat der frisch erstellte DataFrame
Wert , sofern Sie keine anderen Anforderungen haben, einen doppelten Wert. Im obigen Beispiel data['idx_col']
hat die gleichen Daten wie data.index
.
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
import pandas as pd
series_1 = pd.Series(list(range(10)))
series_2 = pd.Series(list(range(20,30)))
Erstellen Sie einen leeren Datenrahmen mit nur den gewünschten Spaltennamen
df = pd.DataFrame(columns = ['Column_name#1', 'Column_name#1'])
Fügen Sie den Serienwert mithilfe des Mapping-Konzepts in den Datenrahmen ein
df['Column_name#1'] = series_1
df['Column_name#2'] = series_2
Überprüfen Sie jetzt die Ergebnisse
df.head(5)
Sie sind sich nicht sicher, ob ich Ihre Frage vollständig verstehe, aber möchten Sie dies tun?
pd.DataFrame(data=dict(s1=s1, s2=s2), index=s1.index)
( index=s1.index
ist hier nicht mal nötig)
Eine Vereinfachung der Lösung basierend auf join()
:
df = a.to_frame().join(b)
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 ()
output=pd.DataFrame(X_test)
output['prediction']=y_pred
list=output.values.tolist()