Заменить определенный текст значением, если текст в списке - PullRequest
0 голосов
/ 27 октября 2018

Я просто набираю скорость на Пандах и не могу решить одну проблему. У меня есть список округов в штате Нью-Йорк. Если округ является одним из 5 районов, я хочу изменить название округа на Нью-Йорк, в противном случае я оставлю это в покое. Следующее дает идею, но не правильно.

РЕДАКТИРОВАТЬ - поэтому, если до изменения в графствах округов первых нескольких строк были Олбани, Аллегейни, Бронкс до изменения, они были бы Олбани, Аллегейни, Нью-Йорк после изменения

# clean up county names
# 5 boroughs must be combined to New York City
# eliminate the word county
nyCounties = ["Kings", "Queens", "Bronx", "Richmond", "New York"]

nypopdf['County'] = ['New York' for nypopdf['County'] in nyCounties else   
nypopdf['County']]

1 Ответ

0 голосов
/ 27 октября 2018

Небольшой макет:

In [44]: c = ['c', 'g']
In [45]: df = pd.DataFrame({'county': list('abccdefggh')})
In [46]: df['county'] = df['county'].where(~df['county'].isin(c), 'N')
In [47]: df
Out[47]:   county
         0      a
         1      b
         2      N
         3      N
         4      d
         5      e
         6      f
         7      N
         8      N
         9      h

Так что с помощью pd.Series.where ~df['county'].isin(c) выбираются строки, которых нет в списке c (~в начале - операция «не»), вторым аргументом является значение, которое необходимо заменить (если условие имеет значение «Ложь»).

Для соответствия вашему примеру:

nypopdf['County'] = nypopdf['County'].where(~nypopdf['County'].isin(nyCounties), 'New York')

или

nypopdf['County'].where(~nypopdf['County'].isin(nyCounties), 'New York', inplace=True)

Полный пример:

nypopdf = pd.DataFrame({'County': ['Albany', 'Allegheny', 'Bronx']})
nyCounties = ["Kings", "Queens", "Bronx", "Richmond", "New York"]
print(nypopdf)
      County
0     Albany
1  Allegheny
2      Bronx
nypopdf['County'].where(~nypopdf['County'].isin(nyCounties), 'New York', inplace=True)
print(nypopdf)
      County
0     Albany
1  Allegheny
2   New York
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...