Панды правда значение ряда неоднозначно - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь установить один столбец в кадре данных в pandas, основываясь на том, находится ли другое значение столбца в списке. Я стараюсь:

df['IND']=pd.Series(np.where(df['VALUE'] == 1 or df['VALUE'] == 4, 1,0))   

Но я понимаю: Истинное значение Серии неоднозначно. Как лучше всего добиться функциональности:

If VALUE is in (1,4), then IND=1, else IND=0        

1 Ответ

1 голос
/ 24 июня 2019

Вам необходимо присвоить значение else, а затем изменить его с помощью маски, используя isin

df['IND'] = 0
df.loc[df['VALUE'].isin([1,4]), 'IND'] = 1

Для нескольких условий вы можете сделать следующее:

mask1 = df['VALUE'].isin([1,4])
mask2 = df['SUBVALUE'].isin([10,40])

df['IND'] = 0
df.loc[mask1 & mask2, 'IND'] = 1

Рассмотрим пример ниже:

df = pd.DataFrame({
    'VALUE': [1,1,2,2,3,3,4,4]
})

Выход:

    VALUE
0   1
1   1
2   2
3   2
4   3
5   3
6   4
7   4

Тогда

df['IND'] = 0
df.loc[df['VALUE'].isin([1,4]), 'IND'] = 1

Выход:

    VALUE   IND
0   1        1
1   1        1
2   2        0
3   2        0
4   3        0
5   3        0
6   4        1
7   4        1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...