2 votes

Attribuer des magasins aux clients en fonction de l'identifiant du magasin en python

Veuillez suggérer, j'essaie de mapper les clients au magasin en fonction de l'identifiant du client que je veux mapper au magasin suggéré pour ce client

Données d'entrée client :

Place u_ID
NE     NE01
NY     NY02
NJ     NJ09

Données d'entrée magasin :

Place u_ID      nom_magasin
NE     NE01        test1
NE     NE01        test23
NE     NE02        test2
NE     NE05        test3
NE     NE05        test5
NY     NY02        test
NY     NE01        Eg
NJ     NJ09         tt

Code que j'ai utilisé :

cus_el = '+'.join(cus_list) if len(cus_list) > 1 else cus_list
cus_el = [cus_el] if len(cus_list) > 1 else cus_el

store_el = '+'.join(store_list) if len(store_list) > 1 else store_list
store_el = [store_el] if len(store_list) > 1 else store_el

writer.writerow([place, store_el + cus_el)

Mais cela me donne

Place     u_ID               store_name   
NE     NE01+NE02+NE05        test1+test23+test5+test2+test3        
NY     NY02+NE01              test+Eg               
NJ     NJ09                    tt

Résultat attendu

Place u_ID    store_name1   store_name2    store_name2
NE     NE01        test1     test23            test5
       NE02        test2
       NE05        test3
NY     NY02        test
       NE01         Eg
NJ     NJ09         tt

0voto

mburns Points 62

Je ne peux pas commenter, donc je donne mon astuce ici.

Je pense que vous pouvez résoudre la première partie de votre problème en utilisant la fonction groupby de pandas.

EX:

# importer pandas en tant que pd 
import pandas as pd     

# Regroupement initial basé sur "Place" 
# Au sein de chaque équipe, nous regroupons en fonction de "u_ID" 
gkk = df.groupby(['Place', 'u_ID']) 
# Imprimer la première valeur de chaque groupe 
gkk.first() 

Quant à la création des colonnes de magasin, vous pouvez utiliser une partie de votre fonction.

0voto

dimitris_ps Points 3709

Cela devrait le faire

import pandas as pd

df = pd.DataFrame({'Place':['NE', 'NE', 'NE', 'NE', 'NE', 'NE', 'NY', 'NY', 'NJ'],
                   'u_ID':['NE01', 'NE01', 'NE01','NE02', 'NE05', 'NE05', 'NY02', 'NY01', 'NJ09'],
                   'store_name':['test1', 'test23', 'test5','test2', 'test3', 'test5', 'test', 'Eg', 'tt']}) # exemple de dataframe

df['key'] = 1
df['key'] = 'store_name' + df.groupby(['u_ID', 'Place'])['key'].transform('cumsum').astype(str) # créer une colonne de la forme store_nameX où X indique le Xème magasin

df = df.set_index(['Place', 'u_ID', 'key']).unstack() # transposer

df.columns = list(df.columns.droplevel(0))

df

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X