Кажется, что вы хотите заменить значение x[0]
значением x[1]
для случаев, когда процентная разница между двумя значениями (x[0]-x[1])/x[0])*100
составляет менее 10%. Не очень понятно, хотите ли вы вернуть x или только элемент x.
def percentage_diff(x):
if (abs((x[0]-x[1])/x[0])*100) > 10:
return x #or return x[0] if that is what you really want.
else:
x[0] = x[1]
return x #or return x[1] if that is what you really want.
print(percentage_diff([1,1,3,4,54,9])) #the percentage difference between 1 and 1 is less than 10%
print(percentage_diff([1,2,3,4,54,9])) #the percentage difference between 1 and 2 is more than 10%
Вот вывод для вышеуказанного кода:
>>> [1, 1, 3, 4, 54, 9]
>>> [1, 2, 3, 4, 54, 9]
И чтобы применить функцию к pandas DataFrame
, вам нужно сделать:
df['close'] = df.close.apply(percentage_diff)