[英]Pandas: replace values in dataframe
我有一個數據框df
ID active_seconds domain subdomain search_engine search_term
0120bc30e78ba5582617a9f3d6dfd8ca 35 city-link.com msk.city-link.com None None
0120bc30e78ba5582617a9f3d6dfd8ca 54 vk.com vk.com None None
0120bc30e78ba5582617a9f3d6dfd8ca 34 mts.ru shop.mts.ru None None
16c28c057720ab9fbbb5ee53357eadb7 4 facebook.com facebook.com None None
並具有列表url = ['city-link.com', 'shop.mts.ru']
。 我需要用subdomain
更改列。 如果subdomain等於url
的elem之一,請將其保留。 如果subdomain != elem from url
和domain == elem from url
我應該重寫subdomain(向其中寫入域)。 並且,如果subdomain
沒有在列表中沒有變化。 我該如何用熊貓呢? 我嘗試用循環來做,但是花了很多時間
domains = df['domain']
subdomains = df['subdomain']
urls = ['yandex.ru', 'vk.com', 'mail.ru']
for (domain, subdomain) in zip(domains, subdomains):
if subdomain in urls:
continue
elif domain in urls and subdomain not in urls:
df['subdomain'].replace(subdomain, domain, inplace=True)
首先,您需要獲取URL列表中domain字段的記錄:
domains_in_urls = df[df.domain.isin(urls)]
接下來,您必須獲取這些記錄並找出子域字段不在url中的記錄:
subdomains_not_in_urls = domains_in_urls[~domains_in_urls.subdomain.isin(urls)]
並將subdomain字段替換為原始數據幀中那些索引的domain字段:
df.loc[subdomains_not_in_urls.index, 'subdomain'] = \
df.loc[subdomains_not_in_urls.index, 'domain']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.