我有一组数据,其中有一个分组变量,一个位置和该位置的值:
Sample Position Depth
A 1 2
A 2 3
A 3 4
B 1 1
B 2 3
B 3 2
我想生成一个新的列,它是一个内部规范化的深度,如下所示:
Sample Position Depth NormalizedDepth
A 1 2 0
A 2 3 0.5
A 3 4 1
B 1 1 0
B 2 3 1
B 3 2 0.5
这基本上由式NormalizedDepth = (x - min(x))/(max(x)-min(x))
表示,使得最小值和最大值是该组的。
我知道如何在R
中使用dplyr
执行此操作,如下所示:
depths %>%
group_by(Sample) %>%
mutate(NormalizedDepth = 100 * (Depth - min(Depth))/(max(Depth) - min(Depth)))
我不知道如何用pandas
来实现这一点,我尝试过分组和应用,但似乎没有一个能复制我正在寻找的东西。
2条答案
按热度按时间wko9yo5t1#
我们有
transform
(与Rdplyr
中的mutate
相同)和ptp
(这是最大值和最小值之间的差值)xqkwcwgp2#
通过样本系列的值对 Dataframe 进行分组,将匿名函数应用于执行最小最大归一化的(分割)深度系列的每个值,将结果分配给df Dataframe 的NormalizedDepth系列(注意不太可能像上面的YOBEN_S’答案那样有效):