2016-05-28 4 views
2

partie d'un que je dois traiter fichier csv (« de data.csv »), ressemble à ceci:Fusionner lignes dans dataframe

parent_id,parent_name,Type,Companyname,Custsupid,Streetaddress 
3,Customer,,,C0010, 
3,Customer,A,,, 
3,Customer,,ACE SYSTEMS,, 
3,Customer,,,,Straat 10 
7,Customer,,,Q8484, 
7,Customer,B,,, 
7,Customer,,XYZ AUTOMAT,, 
7,Customer,,,,Laan 99 

Pour importer ce fichier dans un dataframe que je fais:

df = pd.read_csv ('data.csv') fillna ('')

Il en résulte:.

------------------------------------------------------------------ 
| |parent_id|parent_name|Type|Companyname|Custsupid|Streetaddress| 
------------------------------------------------------------------ 
|0|3  |Customer | |   |C0010 |    | 
|1|3  |Customer |A |   |   |    | 
|2|3  |Customer | |ACE SYSTEMS|   |    | 
|3|3  |Customer | |   |   |Straat 10 | 
|4|7  |Customer | |   |Q8484 |    | 
|5|7  |Customer |B |   |   |    | 
|6|7  |Customer | |XYZ AUTOMAT|   |    | 
|7|7  |Customer | |   |   |Laan 99  | 
------------------------------------------------------------------ 

Cependant, ce que je veux finir avec, est un datafr Ame qui ressemble à ceci:

------------------------------------------------------------------ 
| |parent_id|parent_name|Type|Companyname|Custsupid|Streetaddress| 
------------------------------------------------------------------ 
|0|3  |Customer |A |ACE SYSTEMS|C0010 |Straat 10 | 
|1|7  |Customer |B |XYZ AUTOMAT|Q8484 |Laan 99  | 
------------------------------------------------------------------ 

J'ai déjà essayé avec df.groupby etc. mais je ne peux pas produire le résultat désiré.

Existe-t-il un moyen d'accomplir ceci avec une base de données pandas?

Répondre

2
In [37]: df.groupby(['parent_id', 'parent_name']).sum() 
Out[37]: 
         Type Companyname Custsupid Streetaddress 
parent_id parent_name           
3   Customer  A ACE SYSTEMS  C0010  Straat 10 
7   Customer  B XYZ AUTOMAT  Q8484  Laan 99 

sum est d'ajouter des chaînes de caractères, et donc ce repose sur le fait que l'ajout de chaînes vides à une chaîne non vide retourne la chaîne non vide.