У меня есть датафрейм в Pandas:
In [10]: df
Out[10]:
Domain Use
0 graph.facebook.com 4242
1 news.bbc.co.uk 23423
2 news.more.news.bbc.co.uk 234432
3 profile.username.co 235523
4 offers.o2.co.uk 235523
5 subdomain.pyspark.org 2325
6 uds.data.domain.net 23523
7 domain.akamai.net 23532
И у меня есть скрипт, который я могу запустить для одного столбца данных: он работает точно так, как я хочу.
In [13]: for row in df.iterrows():
...: cdns = ['akamai', 'maxcdn', 'cloudflare']
...: tld = ['co.uk', 'com', 'org', 'co', 'net']
...: index = df.Domain[df.Domain.str.strip().str.endswith(tuple(tld))].str.split('.').tolist()
...:
...: for x in index:
...: if (x[len(x)-2]) in cdns:
...: if str(x[len(x)-1]) in tld:
...: print(str(x[len(x)-3])+'.'+str(x[len(x)-2])+'.'+ str(x[len(x)-1]))
...: elif (x[len(x)-2]) in cdns:
...: if str(x[len(x)-2]).rstrip()+'.'+ str(x[len(x)-1]).rstrip() in tld:
...: print(str(x[len(x)-4])+'.'+ str(x[len(x)-3])+'.'+str(x[len(x)-2])+'.'+ str(x[len(x)-1]))
...: elif str(x[len(x)-2]).rstrip()+'.'+ str(x[len(x)-1]).rstrip() in tld:
...: print(str(x[len(x)-3])+'.'+str(x[len(x)-2])+'.'+ str(x[len(x)-1]))
...: elif str(x[len(x)-1]) in tld:
...: print(str(x[len(x)-2])+'.'+ str(x[len(x)-1]))
Но мне нужно добавить новый столбец в фрейм данных с результатом моего скрипта в качестве содержимого.Поэтому я хочу иметь столбцы: - ДОМЕН - ИСПОЛЬЗОВАНИЕ - НОВЫЙ ДОМЕН
Где newdomain = результат моего сценария.
Как я могу это сделать?Я искал максимум и минимум, но безуспешно
ОБНОВЛЕНИЕ Я попробовал следующее - но он добавляет ряд, называемый индексом, в столбец.Вместо этого мне нужен результат цикла for:
In [14]: df
Out[14]:
Domain Use
0 graph.facebook.com 4242
1 news.bbc.co.uk 23423
2 news.more.news.bbc.co.uk 234432
3 profile.username.co 235523
4 offers.o2.co.uk 235523
5 subdomain.pyspark.org 2325
6 uds.data.domain.net 23523
7 domain.akamai.net 23532
In [15]: df['newdomain']=index
In [16]: df
Out[16]:
Domain Use newdomain
0 graph.facebook.com 4242 [graph, facebook, com]
1 news.bbc.co.uk 23423 [news, bbc, co, uk]
2 news.more.news.bbc.co.uk 234432 [news, more, news, bbc, co, uk]
3 profile.username.co 235523 [profile, username, co]
4 offers.o2.co.uk 235523 [offers, o2, co, uk]
5 subdomain.pyspark.org 2325 [subdomain, pyspark, org]
6 uds.data.domain.net 23523 [uds, data, domain, net]
7 domain.akamai.net 23532 [domain, akamai, net]
Таким образом, цикл for выдаст: facebook.com, bbc.co.uk и т. Д.