Max*_*ryk 5 python dataframe pandas data-science data-wrangling
我发现很难用语言解释我想要实现的目标,所以请不要因为我展示了一个简单的例子而评判我。我有一个看起来像这样的表:
| 主列 | 一些元数据 | 价值 |
|---|---|---|
| 这 | 真的 | 10 |
| 这 | 错误的 | 3 |
| 那 | 真的 | 50 |
| 那 | 错误的 | 10 |
| 其他 | 真的 | 20 |
| 其他 | 错误的 | 5 |
我想针对 的每种情况分别标准化这些数据main_col。例如,如果我们选择最小-最大归一化并将其缩放到范围 [0; 100],我希望输出如下所示:
| 主列 | 一些元数据 | 值(标准化) |
|---|---|---|
| 这 | 真的 | 100 |
| 这 | 错误的 | 30 |
| 那 | 真的 | 100 |
| 那 | 错误的 | 20 |
| 其他 | 真的 | 100 |
| 其他 | 错误的 | 25 |
其中对于 的每种情况main_col,最高值缩放为 100,另一个值按相应比例缩放。
您可以用来groupby.transform('max')获取每组的最大值,然后就地标准化:
df['value'] /= df.groupby('main_col')['value'].transform('max').div(100)
Run Code Online (Sandbox Code Playgroud)
或者:
df['value'] *= df.groupby('main_col')['value'].transform('max').rdiv(100)
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)