Как добавить столбец на основе сравнения между существующим столбцом и списком в pandas - PullRequest
1 голос
/ 18 апреля 2020

Я сделал:

import pandas as pd
data = pd.read_csv(...

, и в этом файле data (фрейм данных) у меня теперь есть столбец Country, в котором перечислены все (или почти) страны мира.

Помимо этого, у меня есть список с именем eu (под «списком», я имею в виду, что type(eu)==list - это True), в котором перечислены все европейские страны: eu = ["Albania","Andorra",...]

А теперь я хотел бы просмотреть элементы столбца Country моего файла data и каждый раз, когда я нахожу европейскую страну (элемент в моем списке eu), вставлять значение «ДА» в соответствующей строке новый столбец, скажем Europe, сначала созданный в фрейме данных data.

Я просмотрел несколько постов, содержащих ключевое слово iterrows, но не мог понять, как это работает в моем случае. Я начинаю с Python и, безусловно, существует простое решение, но я не могу его найти.

Любые подсказки приветствуются.

Ответы [ 2 ]

0 голосов
/ 18 апреля 2020

Вам просто нужно np.where:

import numpy as np


data['IsEuropeanCountry'] = np.where(data['Country'].isin(eu), 'Yes', 'No') 

Например,

>>> import pandas as pd
>>> import numpy as np
>>> 
>>> eu = ['Greece', 'Germany']
>>> 
>>> data = pd.DataFrame(
...     [
...         [1, 'Greece'],
...         [2, 'Angola'],
...         [3, 'Germany'],
...         [4, 'USA']
...     ],
...     columns=['id', 'Country']
... )
>>> data
   id  Country
0   1   Greece
1   2   Angola
2   3  Germany
3   4      USA
>>> 
>>> data['IsEuropeanCountry'] = np.where(data['Country'].isin(eu), 'Yes', 'No')
>>> 
>>> data
   id  Country IsEuropeanCountry
0   1   Greece               Yes
1   2   Angola                No
2   3  Germany               Yes
3   4      USA                No
0 голосов
/ 18 апреля 2020

Определите метод, а затем используйте его с apply:

def check_for_eu(row):
   country = row['country']
   if country in eu:
      row['europe']='yes'
   else:
      row['europe']='no'

   return row

df = df.apply(check_for_eu,axis=1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...