Pandas: concat data frame mit unterschiedlichem Spaltennamen

Angenommen, ich habe diesen Datenrahmen

id xy 0 a hello 0 b test 1 c hi 2 a hi 3 d bar 

Ich möchte x und y in eine einzige Spalte so konkurrieren, wie sie ihre Ionen hält

 id x 0 a 0 b 1 c 2 a 3 d 0 hello 0 test 1 hi 2 hi 3 bar 

Und wie, wenn ich einen neuen Namen für die Concat-Spalte geben möchte? (ZB 'x' bis 'xy')

  • Wie man Eigenschaften von Whiskern, Fliegern, Kappen, etc. in Seaborn Boxplot bearbeiten
  • Setzen Sie die Spalten MultiIndex-Ebenen zurück
  • Python pandas flagge, wenn mehr als eine eindeutige reihe pro Wert in Spalte
  • Drop erste und letzte Zeile aus jeder Gruppe
  • Fehler beim Schreiben der Pivot-Tabelle zum Excel-Datei
  • So konfigurieren Sie die Anzeigeausgabe in IPython-Pandas
  • Verwenden von Panda zum Vergleichen von Spaltenwerten und Erstellen einer Spalte basierend auf den Werten in verglichenen Spalten?
  • Append Serie zum Dict oder List oder Dataframe von for Loop?
  • 2 Solutions collect form web for “Pandas: concat data frame mit unterschiedlichem Spaltennamen”

    Ich glaube nicht, dass pandas.concat die Option enthält, neue column einzustellen (siehe docs) , aber du könntest es so zuordnen:

    Ab:

      id xy 0 0 a hello 1 0 b test 2 1 c hi 3 2 a hi 4 3 d bar df.set_index('id', inplace=True) pd.DataFrame(pd.concat([df.x, df.y]), columns=['xy']).reset_index() id xy 0 0 a 1 0 b 2 1 c 3 2 a 4 3 d 5 0 hello 6 0 test 7 1 hi 8 2 hi 9 3 bar 

    Wenn die Bestellung von Zeilen nicht wichtig ist, können Sie stack :

     print df id xy 0 0 a hello 1 0 b test 2 1 c hi 3 2 a hi 4 3 d bar s = df.set_index('id').stack() s.index = s.index.droplevel(-1) s.name = 'xy' print pd.DataFrame(s).reset_index() id xy 0 0 a 1 0 hello 2 0 b 3 0 test 4 1 c 5 1 hi 6 2 a 7 2 hi 8 3 d 9 3 bar 
    Python ist die beste Programmiersprache der Welt.