gpt4 book ai didi

python - 如何从 Dask 数据框中选择值等于组最小值的所有行

转载 作者:行者123 更新时间:2023-12-04 01:25:09 24 4
gpt4 key购买 nike

所以我有以下按 Problem 列分组的 dask 数据框。

| Problem | Items   | Min_Dimension | Max_Dimension | Cost  |
|-------- |------ |---------------|-------------- |------ |
| A | 7 | 2 | 15 | 23 |
| A | 5 | 2 | 15 | 38 |
| A | 15 | 2 | 15 | 23 |
| B | 11 | 6 | 10 | 54 |
| B | 10 | 6 | 10 | 48 |
| B | 18 | 6 | 10 | 79 |
| C | 50 | 8 | 25 | 120 |
| C | 50 | 8 | 25 | 68 |
| C | 48 | 8 | 25 | 68 |
| ... | ... | ... | ... | ... |

目标是创建一个新的数据框,其中包含所有行,其中 Cost 值对于这个特定的 Problem 组是最小的。所以我们想要以下结果:

| Problem | Items   | Min_Dimension | Max_Dimension | Cost  |
|-------- |------ |---------------|-------------- |------ |
| A | 7 | 2 | 15 | 23 |
| A | 15 | 2 | 15 | 23 |
| B | 10 | 6 | 10 | 48 |
| C | 50 | 8 | 25 | 68 |
| C | 48 | 8 | 25 | 68 |
| ... | ... | ... | ... | ... |

我怎样才能达到这个结果,我已经尝试使用 idxmin() 就像在另一个问题中提到的那样,但是后来我得到了一个 ValueError: Not all divisions are known, can' t 对齐分区。请使用 set_index 设置索引。

最佳答案

如果您创建另一个按 ProblemCost.min() 分组的数据框会怎么样?假设新列名为 cost_min

df1 = df.groupby('Problem')['Cost'].min().reset_index()

然后,将这个新的 cost_min 列合并回数据框。

df2 = pd.merge(df, df1, how='left', on='Problem')

从那里,做类似的事情:

df_new = df2.loc[df2['Cost'] == df2['cost_min']]

只是写了一些伪代码,但我认为所有这些都适用于 Dask

关于python - 如何从 Dask 数据框中选择值等于组最小值的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62065664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com