Ich habe folgenden Datenrahmen my_df
:Pandas: aggregieren eine Spalte einer nicht-duplizierte Sequenz zu erzeugen
name timestamp color
---------------------------
John 2017-01-01 blue
John 2017-01-02 blue
John 2017-01-03 blue
John 2017-01-04 yellow
John 2017-01-05 red
John 2017-01-06 red
Ann 2017-01-04 green
Ann 2017-01-05 orange
Ann 2017-01-06 orange
Ann 2017-01-07 red
Ann 2017-01-08 black
Dan 2017-01-11 blue
Dan 2017-01-12 blue
Dan 2017-01-13 green
Dan 2017-01-14 yellow
ich dann den folgenden Code verwenden, um die Farbreihenfolge der einzelnen Person zu finden:
new_df = my_df.groupby(['name'], as_index=False).color \
.agg({"color_list": lambda x: list(x)})
Dann new_df
wie folgt aussieht:
name color_list
-----------------------------------------------
John blue, blue, blue, yellow, red, red
Ann green, orange, orange,red, black
Dan blue, blue, green, yellow
Allerdings, wenn ich möchte eine color_seq
(keine konsekutiv doppelte Farben) anstelle von color_list
wie unten, wie kann ich meinen obigen Code ändern? Vielen Dank!
name color_seq
-----------------------------------------------
John blue, yellow, red
Ann green, orange, red, black
Dan blue, green, yellow
lambda x: set (x)? – Vaishali
nein, Satz konnte die Reihenfolge der Reihenfolge nicht garantieren. – Edamame