Ich habe zwei Serien s1
und s2
mit den gleichen (nicht aufeinander folgenden) Indizes. Wie kombiniere ich s1
und s2
zu zwei Spalten in einem DataFrame und behalte einen der Indizes als dritte Spalte bei?
Antworten
Zu viele Anzeigen?Wenn Sie versuchen, Serien gleicher Länge zusammenzuführen, aber ihre Indizes nicht übereinstimmen (was eine häufige Situation ist), wird durch die Verkettung von ihnen an den Stellen, an denen sie nicht übereinstimmen, NA generiert.
x = pd.Series({'a':1,'b':2,})
y = pd.Series({'d':4,'e':5})
pd.concat([x,y],axis=1)
#Output (Ich habe Spaltennamen hinzugefügt, um es klarer zu machen)
Index x y
a 1.0 NaN
b 2.0 NaN
d NaN 4.0
e NaN 5.0
Angenommen, es ist Ihnen egal, ob die Indizes übereinstimmen, ist die Lösung, beide Serien neu zu indizieren, bevor Sie sie verketten. Wenn drop=False
, was der Standardwert ist, wird Pandas den alten Index in einer Spalte des neuen Datenrahmens speichern (die Indizes werden hier aus Einfachheit entfernt).
pd.concat([x.reset_index(drop=True),y.reset_index(drop=True)],axis=1)
#Output (Spaltennamen hinzugefügt):
Index x y
0 1 4
1 2 5
Ich habe Pandas verwendet, um mein Numpy-Array oder iSeries in ein DataFrame umzuwandeln und dann eine zusätzliche Spalte mit dem Schlüssel 'Vorhersage' hinzugefügt. Wenn Sie das DataFrame wieder in eine Liste konvertieren müssen, verwenden Sie values.tolist()
output = pd.DataFrame(X_test)
output['prediction'] = y_pred
list = output.values.tolist()
- See previous answers
- Weitere Antworten anzeigen