2017-10-17 13 views
0

J'ai un dataframe de pandas géants qui ressemble à ceci:valeurs Convertir dans une colonne à une seule rangée Python

Area1 Area2 
    1  2  
    1  4 
    1  5 
    1  9 
    2  8 
    2  16 
    2  4 
    2  1 
    3  8 
    3  9 

Comment puis-je convertir la colonne « Area2 » afin qu'il devienne une liste de valeurs pour chaque « Area1 «colonne

donc la sortie je veux est:

Area1  Area2 
    1  2, 4, 5, 9  
    2  8, 16, 4, 1 
    3  8, 9 

Je l'ai fait en R précédemment:

df %>% group_by(Area1) %>% summarise(Area2= toString(sort(unique(Area2)))) 

J'ai essayé groupby() et agg() mais je n'ai pas eu de succès.

Quelqu'un pourrait-il expliquer ce que je peux utiliser une fois que je l'ai regroupé les données à l'aide df.groupby (« Area1 »)

Un grand merci à l'avance pour toute suggestion.

Répondre

1

Vous pouvez GroupBy et appliquer la liste

import pandas as pd 
df=pd.read_csv("test.csv") 
df.groupby('Area1')['Area2'].apply(list) 
1

L'extrait de R fait concaténation de chaîne. La ligne suivante conserve le type Area2.

import pandas as pd 

df.groupby('Area1').Area2.apply(pd.Series.tolist).reset_index()