【发布时间】:2020-05-30 15:00:25
【问题描述】:
考虑一个 Pandas 数据框,例如:
>>> import pandas as pd
>>> df = pd.DataFrame(dict(url=['http://url1.com', 'http://www.url1.com', 'http://www.url2.com','http://www.url3.com','http://www.url1.com']))
>>> df
给予:
url
0 http://url1.com
1 http://www.url1.com
2 http://www.url2.com
3 http://www.url3.com
4 http://www.url1.com
我想删除所有包含url1.com 和url2.com 的行以获得如下数据帧结果:
url
0 http://ww.url3.com
我这样做
domainToCheck = ('url1.com', 'url2.com')
goodUrl = df['url'].apply(lambda x : any(domain in x for domain in domainToCheck))
但这没有给我任何结果。
知道如何解决上述问题吗?
编辑:解决方案
import pandas as pd
import tldextract
df = pd.DataFrame(dict(url=['http://url1.com', 'http://www.url1.com','http://www.url2.com','http://www.url3.com','http://www.url1.com']))
domainToCheck = ['url1', 'url2']
s = df.url.map(lambda x : tldextract.extract(x).domain).isin(domainToCheck)
df = df[~s].reset_index(drop=True)
【问题讨论】:
标签: python pandas dataframe filtering