2016-07-20 8 views
2

Ich habe einen Datenrahmen dfPandas: Union Strings in Datenrahmen

ID active_seconds domain subdomain search_engine search_term 
0120bc30e78ba5582617a9f3d6dfd8ca 35 vk.com vk.com None None 
0120bc30e78ba5582617a9f3d6dfd8ca 54 vk.com vk.com None None 
0120bc30e78ba5582617a9f3d6dfd8ca 34 vk.com vk.com None None 
16c28c057720ab9fbbb5ee53357eadb7 4 facebook.com facebook.com None None 
16c28c057720ab9fbbb5ee53357eadb7 4 facebook.com facebook.com None None 
16c28c057720ab9fbbb5ee53357eadb7 8 facebook.com facebook.com None None 
0120bc30e78ba5582617a9f3d6dfd8ca 16 megarand.ru megarand.ru None None 
0120bc30e78ba5582617a9f3d6dfd8ca 6 vk.com vk.com None None 

Ich brauche df zu ändern. Wenn zu IDsubdomain[i] == subdomain[i-1] sollte ich diese Zeichenfolge und Union. Daraus df I

ID active_seconds domain subdomain search_engine search_term 
0120bc30e78ba5582617a9f3d6dfd8ca 123 vk.com vk.com None None 
16c28c057720ab9fbbb5ee53357eadb7 16 facebook.com facebook.com None None 
0120bc30e78ba5582617a9f3d6dfd8ca 16 megarand.ru megarand.ru None None 
0120bc30e78ba5582617a9f3d6dfd8ca 6 vk.com vk.com None None 

Was Sould ich es tun bekommen?

+0

Warum nicht zusammen waren die letzten beiden Zeilen verbunden? – unutbu

+0

@unutbu weil 'domain [i]! = Domain [i-1]' – ldevyataykina

Antwort

2

Das ist wirklich nah dran. Ich bin mir nicht sicher, ob es für Sie wichtig ist, diese Reihenfolge zu korrigieren.

Auch habe ich eine Annahme, dass ich groupbyID. Dies bedeutet, dass, wenn das gleiche ID über eine andere ID erstreckt und immer noch in der gleichen Subdomäne, werde ich die aggregieren.

def proc_id(df): 
    cond = df.subdomain != df.subdomain.shift() 
    part = cond.cumsum() 
    df_ = df.groupby(part).first() 
    df_.active_seconds = df.groupby(part).active_seconds.sum() 
    return df_ 

df.groupby('ID').apply(proc_id).reset_index(drop=True) 

enter image description here

+0

Können Sie sagen, wenn ich eine Liste habe: 'lst_domain = ['vkontakte.ru', 'yandex.ru', 'vk.com' , 'moscow.vk.com', 'city-link.ru'] 'und ich brauche, wenn' domain' gleich ist einige dieser Liste, sollte ich das verwenden, aber wenn zum Beispiel Domain in df ist gleich 'msk.city -link.ru' Ich sollte schreiben, wie es in 'lst.domain' schreibt. Ich meine in der Liste habe ich 'city-link.ru', aber in df' msk.city-link.ru'. Und ich sollte es wie in einer Liste umschreiben – ldevyataykina

+0

Das scheint eine andere Frage zu sein? Sie sollten eine neue Frage stellen, die genau danach fragt. – piRSquared

+0

@piRSquared Gibt es so etwas wie eine komplexe Ein-Zeilen-Lösung? – shivsn