Pandas 从现有列中添加列 based_domain

Pandas add column based_domain from existing column

我是 pandas 的新手。我有这样一个数据集:

df = pd.DataFrame({'Date':['10/2/2011', '11/2/2011', '12/2/2011', '13/2/2011'],
                'Event':['music.example.com', 'poetry.example.com', 'theatre.domain.com', 'comedy.domain.com'],
                'Cost':[10000, 5000, 15000, 2000]})

并且想为“基域”添加一列,这样我就可以在基域而不是子域上执行聚合函数。在此示例中,新列将具有值

'baseDomain':['example.com', 'example.com', 'domain.com', 'domain.com'],

不能一味地在“.”上拆分。所以可能应该使用类似 tld 的东西,尽管域不是 URLs

==========更新

使用 adhg 和 Henry Ecker 解决方案并按如下方式进行:

def get_base_domain(event):
    ext = tldextract.extract(event)
    return ext.domain + '.' + ext.suffix

df['baseDomain']  = df.apply(lambda x: get_base_domain(x['Event']), axis=1)

你可以这样做:

def get_base_domain(event):
    return event[event.index('.')+1:]

df['baseDomain']  = df.apply(lambda x: get_base_domain(x['Event']), axis=1)

期望的结果:

         Date   Event               Cost     baseDomain
0   10/2/2011   music.example.com   10000   example.com
1   11/2/2011   poetry.example.com  5000    example.com
2   12/2/2011   theatre.domain.com  15000   domain.com
3   13/2/2011   comedy.domain.com   2000    domain.com

如果您有不干净的事件域数据,请调整get_base_domain