Заполнение nan, если строка в другом столбце соответствует условию - PullRequest
1 голос
/ 07 марта 2019

У меня есть следующий фрейм данных:

df=pd.DataFrame({'state':['AL','WI','FL','NJ','BM'],'country':['USA','USA','','','']})

Я пытаюсь заполнить столбец моей страны как "США", если соответствующая строка состояния соответствует списку состояний:

states = ['AL', 'WI', 'AZ', 'FL', 'NJ', 'CO', 'CT', 'NY']

Я просмотрел следующий связанный пост SO: Python Dataframe заполняет значения NaN, используя информацию из других столбцов

Хотя вопрос такой же, я не могу использовать функцию apply в моем случае, так как не знаю, как проверить, есть ли другое значение столбца в списке значений. Я попробовал следующий (неудачный) код:

 df['country'] = values.where(df['country'] == np.nan and df['state'] in states, others=df['country'])
    ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

1 Ответ

2 голосов
/ 07 марта 2019

Допустим, пробелы np.nan, если нет, то вы можете заменить на df=df.replace('',np.nan), вы можете использовать numpy.where() для более быстрых результатов:

df.country=np.where(df.state.isin(states),df.country.fillna('USA'),df.country)
print(df)

  state country
0    AL     USA
1    WI     USA
2    FL     USA
3    NJ     USA
4    BM     NaN
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...