Вот моя проблема
Ниже вы найдете образец моего DataFrame:
df = pd.DataFrame({'Date':['01/03/2000','01/04/2000','01/05/2000','01/06/2000','01/07/2000','01/08/2000'],
'Paul_Score':[3,10,22,32,20,40],
'John_Score':[8,42,10,57,3,70]
})
df['Date']= pd.to_datetime(df['Date'])
df = df.set_index('Date')
И я начал работать над al oop с таким выражением If:
def test(selection,symbol):
df_end = (selection*0)
rolling_mean = selection.rolling(2).mean().fillna(0)
calendar = pd.Series(df_end.index)
for date in calendar:
module=1/selection.loc[date,symbol]
if selection.loc[date,symbol] > rolling_mean.loc[date,symbol]:
df_end.loc[date,symbol] = module
else:
df_end.loc[date,symbol]=0
return df_end
Тогда:
test(df,'John_Score')
Однако моя проблема в том, что я не знаю, как работать со многими столбцами одновременно, моя цель - попробовать эту функцию на весь фрейм данных (для всех столбцов). В этом примере всего 2 столбца, но на самом деле у меня 30 столбцов, и я не знаю, как это сделать.
РЕДАКТИРОВАТЬ:
Это то, что у меня есть с test(df,'John_Score')
:
Paul_Score John_Score
Date
2000-01-03 0 0.125000
2000-01-04 0 0.023810
2000-01-05 0 0.000000
2000-01-06 0 0.017544
2000-01-07 0 0.000000
2000-01-08 0 0.014286
И это то, что у меня с test(df,'Paul_Score')
:
Paul_Score John_Score
Date
2000-01-03 0.333333 0
2000-01-04 0.100000 0
2000-01-05 0.045455 0
2000-01-06 0.031250 0
2000-01-07 0.000000 0
2000-01-08 0.025000 0
И я бы хотел что-то вроде этого:
Paul_Score John_Score
Date
2000-01-03 0.333333 0.125000
2000-01-04 0.100000 0.023810
2000-01-05 0.045455 0.000000
2000-01-06 0.031250 0.017544
2000-01-07 0.000000 0.000000
2000-01-08 0.025000 0.014286
Моя цель - проверять df каждый день в каждом столбце, и если значение больше, чем значение его скользящего среднего 2 дня, мы вычисляем 1 / значение df, если оно истинно, и 0, если нет.
Это может быть более простой способ, но я пытаюсь улучшить свои навыки кодирования с помощью оператора for / if, и я обнаружил, что у меня возникают трудности с выполнением вычислений на Фреймы данных с множеством столбцов
Если у вас есть идеи, добро пожаловать