Я пытаюсь найти правильный синтаксис Python для создания флага со значением yes, если columnx содержит любое из следующих чисел: 1, 2, 3, 4, 5.
def create_flag(df):
if df['columnx'] in (1,2,3,4,5):
return df['flag']=='yes'
Я получаю следующую ошибку.
TypeError: invalid type comparison
Есть ли очевидная ошибка в моем синтаксисе?






Используйте np.where с pandas isin как:
df['flag'] = np.where(df['columnx'].isin([1,2,3,4,5]),'yes','no')
TypeError: isin () принимает 2 позиционных аргумента, но было дано 4, это ошибка, которую я получаю
@pynewbee, не могли бы вы проверить синтаксис внутри isin, указали ли вы список как [1,2,3,4,5] или что-то еще.
В вашем коде много проблем! я предполагаю, что вы хотите попробовать что-то вроде этого
def create_flag(df):
if df['columnx'] in [1,2,3,4,5]:
df['flag']='yes'
x = {"columnx":2,'flag':None}
create_flag(x)
print(x["flag"])
Python чувствителен как к регистру, так и к пробелу. Опубликованный вами код вызовет синтаксическую ошибку до того, как наберет ошибку.