Как мне подписать логическую функцию во фрейме данных в Python? - PullRequest
2 голосов
/ 16 февраля 2020

У меня есть фрейм данных, который выглядит следующим образом:

    key             Candidate   Position duplicates
0   0-39-1  SHRI. BISHNU PADA RAY    1    False
1   0-39-1  SHRI. KULDEEP RAI SHARMA 2    False
2   0-39-1  SHRI TAPAN KUMAR BEPARI  3    False
3   0-39-1  SHRI. P. R. GANESHAN     4    False
4   0-39-1  SMTI. R. S. UMA BHARATTH 5    True

Я хочу иметь значение 1, если дублирующее значение равно True, и 0, если оно равно False. В этом столбце есть только эти 2 значения. Я прочитал много ответов на это и уже опробовал следующее:

df["duplicates"] = int(df["duplicates"]==True) df["flag_numeric"][df["duplicates"]==True] = 1

И несколько других тривиальных решений, но каждый раз я получаю следующую ошибку: 'bool' object is not subscriptable

Поскольку я новичок в python, может кто-нибудь помочь мне найти правильный ответ?

Ответы [ 3 ]

3 голосов
/ 16 февраля 2020

Преобразование логических значений в 0 и 1 может быть выполнено путем приведения к типу int. Для этого используйте метод astype:

df['duplicates'].astype(int)
1 голос
/ 16 февраля 2020

Примерно так:

df["duplicates"] = df.duplicates.map(int)
0 голосов
/ 16 февраля 2020

[df["duplicates"]==True] = 1

Требуется также двойной знак равенства == вне скобки, сделайте так: df[df['column_name'] == value] == 1

Так что в вашем случае это будет:

if df[df['duplicates'] == True]: #the double square brackets are important
    return 1
else
    return 0

Надеюсь, это поможет!

...