【发布时间】:2022-11-15 03:12:38
【问题描述】:
我有一个数据框,我希望返回一个列表,其中包含与每个细分市场的最低成本相匹配的所有值。数据框如下所示:
| Segment | Part ID | Cost |
|---|---|---|
| 1 | 1 | $0.5 |
| - | - | - |
| 1 | 2 | $0.6 |
| 1 | 3 | $0.5 |
| 1 | 4 | $0.7 |
| 2 | 5 | $0.4 |
| 2 | 6 | $0.5 |
| 2 | 7 | $0.6 |
等等。
我希望最终得到的是一个像这样的新数据框:
| Segment | Part List | Min. Cost |
|---|---|---|
| 1 | [1,3] | $0.5 |
| 2 | [5] | $0.4 |
我正在努力完成这项工作。我尝试了几件事:
df['Min Segment Price'] = df.groupby(*['Segment']['Cost'].transform(min)
此行正确地向完整数据框添加了一列,以说明该细分市场的最低价格。
min_part_list= df['Part ID'].loc[df['Cost'].eq(df['Cost'].min())].to_list()
似乎它只返回段的第一个最小值,而不是全部。
我也试过这个:
df['Segment Min Part ID']= df['Part ID'].loc[df['Cost'].eq(df['Cost'].min())]
并且它仅在数据框价格最低的行中返回部件 ID,而不是每个段的价格最低的行。我不确定如何添加有关细分市场最低价格的额外资格。
谢谢!
【问题讨论】: