我有一个DF,标签和值如下:
df = pd.DataFrame({'labels' : ['A','A', 'B', 'C', 'C'],'val' : [1, 2, 3, 4, 5]})
现在,我想计算标准差,如下所示:对于每一行:带有A的行:(B和C标签的标准偏差)(前2行将具有所有其他行的标准偏差)带有B的行:(A和C标签的标准偏差)(第三行将具有所有其他行的标准偏差)带有C的行:(A和B标签的标准偏差)(最后2行将具有所有其他行的标准偏差)我如何才能做到这一点?
6qftjkof1#
更新要优化,请预先计算每个标签的标准偏差:
df = pd.DataFrame({'labels' : ['A','A', 'B', 'C', 'C'],'val' : [1, 2, 3, 4, 5]}) labels = df.labels.unique() std_map = {l:df[df.labels != l]["val"].std() for l in labels} df["std_dev"] = df["labels"].apply(lambda l: std_map[l])
迭代 Dataframe 并筛选具有其他标签的行,然后计算标准偏差:
df = pd.DataFrame({'labels' : ['A','A', 'B', 'C', 'C'],'val' : [1, 2, 3, 4, 5]}) df["std_dev"] = df.apply(lambda row: df[df.labels != row["labels"]]["val"].std(), axis=1) [Out]: labels val std_dev 0 A 1 1.000000 1 A 2 1.000000 2 B 3 1.825742 3 C 4 1.000000 4 C 5 1.000000
1条答案
按热度按时间6qftjkof1#
更新要优化,请预先计算每个标签的标准偏差:
迭代 Dataframe 并筛选具有其他标签的行,然后计算标准偏差: