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
我是 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