我有一个如下所示的数据框:
ids value
1 0.1
1 0.2
1 0.14
2 0.22
....
我试图遍历每个 id 并为每个 id 计算一个新列“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 score 为 0。然后使用之前的值(最多 i-1)来计算 z score 每次迭代的均值和标准差。我的 df 将如下所示:
ids value z_score
1 0.1 ..
1 0.2 ..
1 0.14 ..
2 0.22 ..
....
白板的微信
相关分类