我发现很难用语言来解释我想要实现的目标,所以请不要因为我展示了一个简单的例子而对我进行评判.我有一张桌子,看起来像这样:

main_col some_metadata value
this True 10
this False 3
that True 50
that False 10
other True 20
other False 5

我想对每个main_col人的情况分别进行正常化处理.例如,如果我们要 Select 最小-最大规格化并将其zoom 到范围[0;main_col],我希望输出如下所示:

main_col some_metadata value (normalized)
this True 100
this False 30
that True 100
that False 20
other True 100
other False 25

其中,对于每个main_col的情况,最高值zoom 到main_col,而另一个值按各自的比例zoom .

推荐答案

您可以使用groupby.transform('max')来获取每个组的最大值,然后就地规格化:

df['value'] /= df.groupby('main_col')['value'].transform('max').div(100)

或者:

df['value'] *= df.groupby('main_col')['value'].transform('max').rdiv(100)

输出:

  main_col  some_metadata  value
0     this           True  100.0
1     this          False   30.0
2     that           True  100.0
3     that          False   20.0
4    other           True  100.0
5    other          False   25.0

Python相关问答推荐

Pandas 都是(),但有一个门槛

加速Python循环

Python—从np.array中 Select 复杂的列子集

Pre—Commit MyPy无法禁用非错误消息

无法连接到Keycloat服务器

并行编程:同步进程

极点替换值大于组内另一个极点数据帧的最大值

Django在一个不是ForeignKey的字段上加入'

Scipy差分进化:如何传递矩阵作为参数进行优化?

如何写一个polars birame到DuckDB

PYTHON中的selenium不会打开 chromium URL

如何在Polars中创建条件增量列?

对于数组中的所有元素,Pandas SELECT行都具有值

我怎样才能让深度测试在OpenGL中使用Python和PyGame呢?

#将多条一维曲线计算成其二维数组(图像)表示

利用广播使减法更有效率

当lambda函数作为参数传递时,pyo3执行

try 使用RegEx解析由标识多行文本数据的3行头组成的日志(log)文件

为什么这个正则表达式没有捕获最后一次输入?

大Pandas 每月重新抽样200万只和300万只