У меня есть dataframe, и я написал следующую функцию для заполнения нового столбца:«Значение истинности Серии неоднозначно. Серия» против Element Fuction
df = pd.DataFrame(np.random.randn(10, 2), columns=['a', 'b'])
def perc(a,b):
if a/b < 0:
n = 0
elif a/b > 1:
n = 1
else:
n = a/b
return n
df['c']=perc(df['a'],df['b'])
df[1:10]
Он должен вычислить столбец процентов. Вот ошибка, которую я получаю:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Я понимаю, что это связано с различием и неподходящими рядами вместо отдельных элементов. Но как я могу это исправить?
Что поведение вы на самом деле хотите? Приведите пример ввода и ожидаемый результат, который демонстрирует всю логику, которую вы пытаетесь захватить. Вот моя догадка, если 'diff' были серией' [-1, 1, 3, 5] 'и' unc' были серией '[2, 2, 3, 3]', тогда 'dif/unc' будет' [-0.5, 0.5, 1, 1.6666] 'и вы хотите вернуть' [0, 0.5, 1, 1] ', это правильно? –
Мне нужна колонка «C», чтобы показать уникальное значение для a/b этой строки. Но если его отрицательный он должен быть 0%, или если его более 100%, он должен показать 1. – Mateyobi
Эй, да, вы поняли. Вы, должно быть, отредактировали его после моего ответа. Обратите внимание, что я отредактировал свой OP, чтобы быть более общим a/b. – Mateyobi