Maison >développement back-end >Tutoriel Python >Comment concaténer des chaînes de plusieurs lignes dans Pandas à l'aide de Groupby ?
Concaténer des chaînes de plusieurs lignes à l'aide de Pandas Groupby
Lorsque vous travaillez avec des dataframes, il peut y avoir des situations où vous devez consolider les chaînes de plusieurs lignes tout en les regroupant selon des critères précis. Pandas offre une solution pratique pour cela grâce à ses fonctions de regroupement et de transformation.
Énoncé du problème
Étant donné une trame de données avec les colonnes « nom », « texte » et « mois » ', l'objectif est de concaténer les chaînes dans la colonne 'texte' pour chaque combinaison unique de 'nom' et 'mois'. Le résultat souhaité est une trame de données avec des combinaisons uniques de « nom » et de « mois » et les valeurs de « texte » concaténées.
Solution
Pour y parvenir, vous pouvez utiliser les étapes suivantes :
Voici un exemple de code :
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()
Le code ci-dessus génère une trame de données avec le résultat souhaité :
name text month 0 name1 hej,du 11 2 name1 aj,oj 12 4 name2 fin,katt 11 6 name2 mycket,lite 12
Solution alternative
Au lieu d'utiliser transform(), vous pouvez également utiliser apply() puis reset_index() pour arriver au même résultat. Le code mis à jour serait :
df.groupby(['name','month'])['text'].apply(','.join).reset_index()
Cette version simplifiée élimine l'expression lambda et fournit une solution plus concise.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!