2017-02-16 15 views
0

Salut, j'ai données (dans Excel et fichier texte ainsi) commeRegroupement des données sur la valeur de la colonne

C1 C2 C3 
1 p  a 
1 q  b 
2 r  c 
2 s  d 

Et je veux que la sortie comme:

C1 C2 C3 
1 p,q a,b 
2 r,s c,d 

Comment puis-je regrouper les données sur sur les valeurs de colonne. Je suis ouvert à n'importe quoi: n'importe quelle bibliothèque, n'importe quelle langue, n'importe quel outil Comme python, bash, ou même excel?

Je pense que nous pouvons le faire en utilisant des pandas en python, mais je ne l'ai jamais utilisé auparavant.

Tous les fils ont été appréciés.

+1

Qu'est-ce que vous essayez avec _any bibliothèque, une langue, un outil comme python, bash, ou même excel_? Avez-vous tenté et échoué? – Inian

+0

A partir de maintenant, je n'ai pas essayé. Je trouve la meilleure façon de le faire – user2696258

Répondre

3

Première pandas.read_excel - sortie est DataFrame:

df = pd.read_excel('file.xlsx') 

Ensuite, vous pouvez utiliser groupby avec aggjoin:

df = df.groupby('C1').agg(','.join).reset_index() 
print (df) 
    C1 C2 C3 
0 1 p,q a,b 
1 2 r,s c,d 

Si plusieurs colonnes df et ont besoin de filtrer seulement C2 et C3:

df = df.groupby('C1')['C2','C3'].agg(','.join).reset_index() 
print (df) 
    C1 C2 C3 
0 1 p,q a,b 
1 2 r,s c,d 

Pour enregistrer sur excel utilisation de fichiers DataFrame.to_excel, évidemment sans index:

df.to_excel('file.xlsx', index=False) 
+0

cela utilise des pandas? – user2696258

+0

exactement, c'est une solution de pandas. – jezrael

+0

Salut, cela fonctionne. Juste que ce n'est pas l'agrégation de toutes les colonnes. J'ai essayé d'utiliser explicitement tous les noms de colonnes, mais je ne travaille toujours pas. est-ce que l'agrégation a une certaine restriction sur le type de données de la colonne? Les colonnes qui ne sont pas agrégées sont de type: "Date", "ID (varchar)", "Nombre (code numérique)" ?? S'il vous plaît aidez-moi ici – user2696258