У меня есть следующий набор данных, построенный с использованием pandas:
URLS \
0
1 www.gene.eu
2 www.cittametropolitana.me.it
3 www.regione.basilicata.it
4 www.bbc.co.uk
Paths
0
1 /news-room/q-a-detail/
2 /emergenza-sanitari/
3 /giunta/site/giunta/detail.jsp
4 /focus/
И я хотел бы проверить суффикс каждого URL-адреса (eu, it, co.uk, ...), назначая один из эти значения:
suffix=['.it','.uk','.eu'] # this should be used as set which includes all the suffix that I want to check
country=['Italy','United Kingdom','Europe'] # values to assign based on the suffix
zipped = list(zip(suffix, country)) # create a connection between suffix and country
Я пытался несколькими способами, спасибо также нескольким пользователям, которые помогли мне с этой проблемой) добавить этот новый столбец с суффиксной информацией в моем образце фрейма данных, но безуспешно (пожалуйста, найдите здесь вопрос, связанный с этой проблемой, с другим примером: Добавление нового столбца с условием ):
country = {k.lower() : v for (k,v) in zipped}
og = {k : v for (k,v) in suffix}
country.update(og)
# (1)
df['value'] = df['URLS'].str.split(".", expand=True).stack().reset_index(1).query(
"level_1 == level_1.max()"
)[0].map(country)
# (2)
original_domain = {x: y for x, y in zipped}
df['value'] = df['URLS'].apply(lambda sen : original_domain.get( sen[-1], 'Unknown') ) )
# (3)
df['value']=df['URLS'].map(lambda x: x[-3:] in zipped)
#(4)
df['value'] = np.where(df['URLS'].str.endswith(suffix), pd.to_datetime(df['value'])) # it returns me errors and t needs another step to assign country
, но ни один из этих фрагментов кода не работает. URLS - это столбец, полученный путем анализа ссылок. Я думаю, что проблема может заключаться в определении значения столбца из вычисляемого элемента без создания списка, поэтому мне нужно будет создать его в зависимости от URL-адресов. Поэтому я хотел бы спросить вас, как добавить эти новые столбцы, чтобы найти окончание суффикса и присвоить соответствующее значение (Италия, Великобритания, ...).
Надеюсь, вы мне поможете.
Спасибо
Редактировать:
df
определяется следующим образом:
df=pd.read_csv('path/text.csv', sep=';', engine='python')
Я думаю, это может вызвать ошибка при попытке применить код, предложенный sK500 .