Ich habe eine Pandas-Serie sf:
email
email1@email.com [1.0, 0.0, 0.0]
email2@email.com [2.0, 0.0, 0.0]
email3@email.com [1.0, 0.0, 0.0]
email4@email.com [4.0, 0.0, 0.0]
email5@email.com [1.0, 0.0, 3.0]
email6@email.com [1.0, 5.0, 0.0]
Und ich möchte es in den folgenden DataFrame umwandeln:
index | email | list
_____________________________________________
0 | email1@email.com | [1.0, 0.0, 0.0]
1 | email2@email.com | [2.0, 0.0, 0.0]
2 | email3@email.com | [1.0, 0.0, 0.0]
3 | email4@email.com | [4.0, 0.0, 0.0]
4 | email5@email.com | [1.0, 0.0, 3.0]
5 | email6@email.com | [1.0, 5.0, 0.0]
Ich habe einen Weg gefunden, aber ich bezweifle, dass es der effizientere ist:
df1 = pd.DataFrame(data=sf.index, columns=['email'])
df2 = pd.DataFrame(data=sf.values, columns=['list'])
df = pd.merge(df1, df2, left_index=True, right_index=True)
reset_index
Aufruf erreicht werden .Antworten:
Anstatt zwei temporäre dfs zu erstellen, können Sie diese einfach als Parameter innerhalb eines Diktats mit dem DataFrame-Konstruktor übergeben:
Es gibt viele Möglichkeiten, eine df zu erstellen, siehe die Dokumente
quelle
pd.concat([sf.index, sf.values], axis=1)
einrahmen() :
Beginnend mit der folgenden Serie, df:
Ich benutze to_frame , um die Serie in DataFrame zu konvertieren:
Jetzt müssen Sie nur noch den Spaltennamen umbenennen und die Indexspalte benennen:
Ihr DataFrame ist zur weiteren Analyse bereit.
Update: Ich bin gerade auf diesen Link gestoßen, wo die Antworten meinen hier überraschend ähnlich sind.
quelle
series_obj.to_frame()
funktioniert! Ich gebe diesen Klassentyp aus<class 'pandas.core.frame.DataFrame'>
to_frame().reset_index()
eher als nur verwendenreset_index
? Sie könnten sogar einfach tunreset_index(name='list')
Eine Antwort wäre eine Zeile
Oder
quelle
Series.reset_index
mitname
ArgumentOft tritt der Anwendungsfall auf, in dem eine Serie zu einem DataFrame hochgestuft werden muss. Aber wenn die Serie keinen Namen hat,
reset_index
führt dies zu etwas wie:Wo Sie sehen, ist der Spaltenname "0". Wir können dies beheben, indem wir einen
name
Parameter angeben.Series.to_frame
Wenn Sie einen DataFrame erstellen möchten, ohne den Index in eine Spalte umzuwandeln, verwenden Sie
Series.to_frame
, wie in dieser Antwort vorgeschlagen . Dies auch unterstützt einen Namen Parameter.pd.DataFrame
KonstrukteurSie können auch das Gleiche tun,
Series.to_frame
indem Sie einencolumns
Parameter angeben:quelle
to_frame
stattdessen verwenden könntereset_index
, aber gibt es jemals einen guten Grund, beide zu verwenden? hierto_frame
scheint kein Argument dafür zu haben. Vielen Dank.Series.to_frame
kann verwendet werden, um einSeries
in umzuwandelnDataFrame
.Beispielsweise,
quelle
wahrscheinlich als nicht-pythonische Methode eingestuft, aber dies ergibt das gewünschte Ergebnis in einer Zeile:
Ergebnis:
quelle