Извлечение названия страны из текста в столбце для создания другого столбца - PullRequest
1 голос
/ 22 января 2020

Я пробовал разные комбинации, чтобы извлечь названия стран из столбца и создать новый столбец только со странами. Я могу сделать это для выбранных строк, например df.address [9998], но не для всего столбца.

import pycountry
Cntr = []
for country in pycountry.countries:
    for country.name in df.address:
        Cntr.append(country.name)

Есть идеи, что здесь не так?

edit:

address - это объект в df, а

df.address [: 10] выглядит следующим образом

       Address
0    Turin, Italy        
1    NaN                 
2    Zurich, Switzerland 
3    NaN                 
4    Glyfada, Greece     
5    Frosinone, Italy    
6    Dublin, Ireland     
7    NaN                 
8    Turin, Italy        
1    NaN                 
2    Zurich, Switzerland 
3    NaN                 
4    Glyfada, Greece     
5    Frosinone, Italy    
6    Dublin, Ireland     
7    NaN                 
8   ...                  
9    Kristiansand, Norway
Name: address, Length: 10, dtype: object

На основании ответа Петра, когда я выполняю отдельные запросы Я правильно понимаю страну, но когда я пытаюсь создать столбец со всеми странами (или диапазонами, такими как df.address [: 5], я получаю пустой Cntr)

    import pycountry
    Cntr = []
    for country in pycountry.countries:
        if country.name in df['address'][1]:
            Cntr.append(country.name)
Cntr
Returns
[Italy]

and df.address[2] returns [ ] 
etc.

Я также запускаю df['address'] = df['address'].astype('str')

, чтобы убедиться, что в столбце нет чисел с плавающей запятой или int.

Ответы [ 2 ]

0 голосов
/ 23 января 2020

Пример кадра данных df = pd.DataFrame({'address': ['Turin, Italy', np.nan, 'Zurich, Switzerland', np.nan, 'Glyfada, greece']})

df[['city', 'country']] = df['address'].str.split(',', expand=True, n=2)

               address     city       country
0         Turin, Italy    Turin         Italy
1                  NaN      NaN           NaN
2  Zurich, Switzerland   Zurich   Switzerland
3                  NaN      NaN           NaN
4      Glyfada, greece  Glyfada        greece
0 голосов
/ 23 января 2020

Вы были действительно близко. Мы не можем l oop, как это for country.name in df.address. Вместо этого:

import pycountry
Cntr = []
for country in pycountry.countries:
    if country.name in df.address:
        Cntr.append(country.name)

Если это не работает, пожалуйста, предоставьте больше информации, потому что я не уверен, как выглядит df.address.

...