Я пытаюсь ввести новую колонку в свои ряды данных.
Я знаю, как использовать np.where(), чтобы сделать эту работу или просто цикл for, но вы хотите попробовать функцию def плюс цикл for.
Однако, когда я использую функцию def плюс цикл for, я всегда заканчивал работу с KeyError: 0. Я хочу сравнить число в Stats с 1, если оно больше 1, мой новый столбец будет иметь значение True и он меньше 1, значение будет False.
Вот мой код:
def compare(a,b):
if a > b:
return True
else:
return False
df.Comparison = {}
for i in range (len(df)):
df.Comparison[i].apply(compare, (df.Stats[i],1))
df
Кажется, вы уже знаете, как использовать np.where
:
df['Comparison'] = np.where(df['Stats'] > 1, True, False)
Но np.where
избыточен, так как вы можете напрямую назначить логическую np.where
:
df['Comparison'] = df['Stats'] > 1
Если вы хотите использовать pd.Series.apply
с пользовательской функцией, обратите внимание, что цикл "скрыт" в методе Pandas. Поэтому вам не нужно писать цикл for
самостоятельно.
def compare(val, k):
return val > k
df['Comparison'] = df['Stats'].apply(compare, 1)
df
? dataframe? это не минимальный воспроизводимый пример