Булева маска Панд содержит NaNs.Как фильтровать? - PullRequest
0 голосов
/ 19 февраля 2019

У меня есть эта панда DataFrame ниже:

    Id                          Guild                                     Test
0   5c5dc770f920209b94c3def3    72f92390/7f2e/4b41/b53b/393470619eca      True
1   5c5dc7707d62f8b356457863    596f57d7/c8a9/4b14/aec1/18ef2b9fa940      None
2   5c5dc770974d1a6d38cffa3a    6a7ad94c/0511/4ef9/8b60/e05158cad03c     False
3   5c5dc7709809c3452ae07d22    843d9c5f/1f53/4752/a905/0b1de73efab2      None
4   5c5dc7706c606a2118c4350b    9d63dcc5/1063/49b3/9a90/a854e7eb7398      None

Когда я пытался применить numpy.where:

pdf['Id'] = np.where(bool(pdf['Test']), pdf['Id'], None)

Такжепопытался использовать numpy.equal:

pdf['Id'] = np.where(np.equal(pdf['Test'], None), None, pdf['Id'])

Выдает ошибку:

ValueError: Истинное значение Series является неоднозначным.Используйте a.empty, a.bool (), a.item (), a.any () или a.all ().

Моя цель: применить None к столбцам Id, где Teste не являетсядопустимое логическое значение.

Я проверял следующие похожие вопросы: ссылка Одна Связь вторая

Заранее спасибо.

1 Ответ

0 голосов
/ 19 февраля 2019

Сложность в том, что ваш «логический» столбец также имеет значения None.

Вместо этого вы можете сравнить столбец «Тест» с True.

pdf['Id'] = np.where(pdf['Test'] == True, pdf['Id'], None)
pdf    
                         Id                                 Guild   Test
0  5c5dc770f920209b94c3def3  72f92390/7f2e/4b41/b53b/393470619eca   True
1                      None  596f57d7/c8a9/4b14/aec1/18ef2b9fa940   None
2                      None  6a7ad94c/0511/4ef9/8b60/e05158cad03c  False
3                      None  843d9c5f/1f53/4752/a905/0b1de73efab2   None
4                      None  9d63dcc5/1063/49b3/9a90/a854e7eb7398   None

Или назначитьиспользуя loc.

pdf.loc[pdf['Test'] != True, 'Id'] = None
pdf    
                         Id                                 Guild   Test
0  5c5dc770f920209b94c3def3  72f92390/7f2e/4b41/b53b/393470619eca   True
1                      None  596f57d7/c8a9/4b14/aec1/18ef2b9fa940   None
2                      None  6a7ad94c/0511/4ef9/8b60/e05158cad03c  False
3                      None  843d9c5f/1f53/4752/a905/0b1de73efab2   None
4                      None  9d63dcc5/1063/49b3/9a90/a854e7eb7398   None
...