【发布时间】:2020-12-14 03:48:05
【问题描述】:
我有如下两个 DF:
| shopID | itemID |
|--------|--------|
| 2 | 30 |
| 2 | 31 |
| 2 | 32 |
| 2 | 33 |
| 2 | 38 |
| date | shopID | itemID | price | cnt |
|------|--------|--------|--------|-----|
| 0.0 | 2.0 | 33.0 | 499.0 | 1.0 |
| 0.0 | 2.0 | 482.0 | 3300.0 | 1.0 |
| 0.0 | 2.0 | 491.0 | 600.0 | 1.0 |
| 0.0 | 2.0 | 839.0 | 3300.0 | 1.0 |
| 0.0 | 2.0 | 1007.0 | 449.0 | 3.0 |
...
第二个是时间序列 DF,其中date 是月份(为简单起见,从 0 开始,到 33 结束)。 shopID 和 itemID 的组合不能保证出现在两个 DF 中。我想在shopID 和itemID 上将DF1 与DF2 合并。我做到了:
pd.merge(df1, df2, how="left", on=["shopID", "itemID"])
像往常一样,它给了我以下 DF:
| shopID | itemID | date | price | cnt |
|--------|--------|------|--------|-----|
| 2 | 30 | 2.0 | 359.00 | 1.0 |
| 2 | 30 | 5.0 | 399.00 | 1.0 |
| 2 | 30 | 15.0 | 169.00 | 1.0 |
| 2 | 30 | 16.0 | 169.00 | 1.0 |
| 2 | 31 | 1.0 | 699.00 | 4.0 |
| 2 | 31 | 2.0 | 698.50 | 1.0 |
| 2 | 31 | 3.0 | 699.00 | 1.0 |
| 2 | 31 | 16.0 | 415.92 | 1.0 |
| 2 | 31 | 33.0 | 399.00 | 1.0 |
| 2 | 32 | 12.0 | 119.00 | 1.0 |
...
我的问题是:我想合并它们并拥有或最新价格(每个组合 shopID-itemID 中的 date 最大)。我该怎么做?
编辑:预期输出(仅上个月)
| shopID | itemID | date | prince | cnt |
|--------|--------|------|--------|-----|
| 2 | 30 | 16.0 | 169.0 | 1.0 |
| 2 | 31 | 33.0 | 399.00 | 1.0 |
| 2 | 32 | 31.0 | 149.00 | 1.0 |
...
【问题讨论】:
-
请发布您的预期输出