Strings aus mehreren Zeilen mit Pandas Groupby verketten
Beim Arbeiten mit Datenrahmen kann es Situationen geben, in denen Sie Strings aus mehreren Zeilen konsolidieren müssen während Sie sie nach bestimmten Kriterien gruppieren. Pandas bietet hierfür durch seine Groupby- und Transformationsfunktionen eine praktische Lösung.
Problemstellung
Gegeben sei ein Datenrahmen mit den Spalten „Name“, „Text“ und „Monat“. Das Ziel besteht darin, die Zeichenfolgen in der Spalte „Text“ für jede eindeutige Kombination aus „Name“ und „Monat“ zu verketten. Die gewünschte Ausgabe ist ein Datenrahmen mit eindeutigen Kombinationen aus „Name“ und „Monat“ und den verketteten „Text“-Werten.
Lösung
Um dies zu erreichen, können Sie verwenden Führen Sie die folgenden Schritte aus:
Hier ist ein Beispielcode:
import pandas as pd from io import StringIO data = StringIO(""" "name1","hej","2014-11-01" "name1","du","2014-11-02" "name1","aj","2014-12-01" "name1","oj","2014-12-02" "name2","fin","2014-11-01" "name2","katt","2014-11-02" "name2","mycket","2014-12-01" "name2","lite","2014-12-01" """) # load string as stream into dataframe df = pd.read_csv(data, header=0, names=["name", "text", "date"], parse_dates=[2]) # add column with month df["month"] = df["date"].apply(lambda x: x.month) df['text'] = df[['name','text','month']].groupby(['name','month'])['text'].transform(lambda x: ','.join(x)) df[['name','text','month']].drop_duplicates()
Der obige Code generiert einen Datenrahmen mit dem gewünschten Ergebnis:
name text month 0 name1 hej,du 11 2 name1 aj,oj 12 4 name2 fin,katt 11 6 name2 mycket,lite 12
Alternative Lösung
Anstatt transform() zu verwenden, können Sie auch apply() und dann reset_index() verwenden um das gleiche Ergebnis zu erzielen. Der aktualisierte Code wäre:
df.groupby(['name','month'])['text'].apply(','.join).reset_index()
Diese vereinfachte Version eliminiert den Lambda-Ausdruck und bietet eine prägnantere Lösung.
Das obige ist der detaillierte Inhalt vonWie verkette ich Zeichenfolgen aus mehreren Zeilen in Pandas mithilfe von Groupby?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!