Я думаю, что вы хотите scipy.stats.percentileofscore
Пример:
percentileofscore([1, 2, 3, 4], 3)
75.0
percentiles = [percentileofscore(data, i) for i in data]
Я бы попробовал что-то вроде этого:
def calculate_profp(row):
profP = None
if row['pos'] == 1:
if row['lastPrice'] < row['exp']:
profP = row['lastPrice'] - row['ltP']
else:
profP = row['lastPrice'] - row['ltP']
return profP
post_df['profP'] = post_df.apply(calculate_profp, axis=1)
Что вы хотите сделать со строками, где row['pos']
не 1
?
, после этого вы можете выполнить: 1110]
post_df['pos'] = post_df.apply(
lambda row: 0 if row['pos'] == 1 and row['lastPrice'] < row['exp'] else row['pos'],
axis=1)
, чтобы установить pos
из 1
в 0
или:
post_df['pos'] = post_df['pos'].map(lambda pos: 0 if pos == 1 else pos)