У меня есть фрейм данных, похожий на этот:
ids value
1 0.1
1 0.2
1 0.14
2 0.22
....
Я пытаюсь перебрать все идентификаторы и вычислить новый столбец 'z-Score' для каждого идентификатора.
for id, row in df.groupby('ids'):
row.reset_index(inplace=True)
row.loc[0, 'z_score'] = 0
row.loc[1, 'z_score'] = 0
for i in range (2, len(row)):
row.loc[i, 'z_score'] = (row.loc[i, value] - row.loc[0:i-1][value].mean()) / row.loc[0:i-1][value].std()
print(row)
# How to add each "row" back to the original dataframe?
Первые два должны иметь z-балл 0. Затем используйте предыдущие значения (до i-1), чтобы вычислить среднее и стандартное отклонение для каждой итерации z-балла.Мой df будет выглядеть так:
ids value z_score
1 0.1 ..
1 0.2 ..
1 0.14 ..
2 0.22 ..
....