2016-07-20 8 views
2

ユニオン文字列私はdfを変更する必要があるデータフレームdfパンダ:データフレーム

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 

を持っています。 IfにIDsubdomain[i] == subdomain[i-1]私はこの文字列とを結合する必要があります。このことから は私がそれを行うために使用するものsould

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 

を取得したいたdf?

+0

?ドメイン名を入力すると、ドメイン名が表示されます。 – unutbu

+0

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

答えて

2

これは本当に近いです。正しい注文を得ることが重要であるかどうかはわかりません。

また、私はgroupbyIDであると仮定しました。つまり、同じIDが別のIDにまたがって同じサブドメインに残っている場合は、active_secondsを集計します。最後の2行が一緒に参加していなかったのはなぜ

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

です。リストがある場合、 'lst_domain = ['vkontakte.ru'、 'yandex.ru'、 'vk.com' 、 'moscow.vk.com'、 'city-link.ru'] ''もし 'domain'がこのリストの一部と等しいなら、私はそれを使うべきですが、例えばdfのドメインが' msk.city -link.ru'私は 'lst.domain'に書き込む方法を書いてください。私はリストでは 'city-link.ru'を持っていますが、df' msk.city-link.ru'にあります。そして私はリストのように書き直すべきです – ldevyataykina

+0

これは別の質問と思われますか?これについて具体的に質問する新しい質問をする必要があります。 – piRSquared

+0

@piRSquared複雑な1行解決のようなものがありますか? – shivsn