J'ai 3 colonnes avec des mots-clés dérivés de différents algorithmes.

Les données sont quelque chose comme ça

description du produit mots clés1 mots clés2 mots clés3

ProductX, "bla bla", [iot, internet, cloud], [cloud, internet, gestion de l'énergie], [internet des objets, cloud, internet]

Comment fusionner la colonne 3 mots-clés en une seule et supprimer les doublons, par exemple les mots-clés «cloud» ne doivent être stockés qu'une seule fois?

0
thefan12345 14 janv. 2021 à 00:53

2 réponses

Meilleure réponse

Utiliser set()

import pandas as pd

df = pd.DataFrame({'c1':[['a', 'c']], 'c2':[['a', 'd']]})
df['c3'] = (df['c1'] + df['c2']).apply(set).apply(list)

df
    c1      c2      c3
0   [a, c]  [a, d]  [d, a, c]
2
Z Li 13 janv. 2021 à 22:09

Vous pouvez appliquer une fonction au bloc de données qui définit l'intersection entre les trois colonnes.

df['updatedKeywords'] = df.apply(lambda row: set(row['keyword1']) & set(row['keyword2'] & set(row['keyword3']), axis=1)

Si vous aviez beaucoup de colonnes à croiser, vous pouvez l'étendre:

columnsToIntersect = ['keyword' + str(i) for i in range(numberOfKeywordColumns)]
df['updatedKeywords'] = df.apply(lambda row: set.intersection(*[set(row[x]) for x in columnsToIntersect], axis=1)

Enfin, vous pouvez également utiliser pandas.DataFrame. agréger, bien que cela puisse être excessif pour ce type de tâche.

0
Noah Friedman 13 janv. 2021 à 22:16
65710332