Pandas 从现有列添加列 based_domain
我是熊猫新手。我有一个像这样的数据集:
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
的东西,尽管域不是 URL
========== 更新
使用了 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)
I new to pandas. I have a dataset like this one:
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]})
And would like to add a column for "base domain" so I can do aggregate functions on base domain instead of subdomain. In this example there new column would have values
'baseDomain':['example.com', 'example.com', 'domain.com', 'domain.com'],
It should not just blindly split on the "." so should probably use something like tld
although the domains are not as URLs
========== Update
Used adhg and Henry Ecker solution and did it like this:
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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你可以这样做:
期望的结果:
如果你有不干净的事件域数据,请调整
get_base_domain
you can do this:
desired result:
adjust
get_base_domain
if you have unclean Event domain data