Pandas:数据帧中的联盟字符串

时间:2016-07-20 09:54:41

标签: python pandas dataframe

我有一个数据框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

我需要更改df。如果要ID subdomain[i] == subdomain[i-1],我应该将此字符串与active_seconds[i-1] + active_seconds[i]结合使用。 从这个df我想得到

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

我可以用它来做什么?

1 个答案:

答案 0 :(得分:2)

这真的很接近。不确定订单是否正确对您来说很重要。

另外,我假设我应该groupby ID。这意味着,如果相同的ID跨越另一个ID但仍位于同一子域中,我将汇总active_seconds

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