【发布时间】:2021-10-07 17:41:29
【问题描述】:
我正在为一个项目编码,但我被困在这里。我以前使用过groupby 函数,但不是这样。我的疑问是-
我有一个如下的数据框:
| ID | Side | Price |
| 1 | left | 100 |
| 2 | right| 90 |
| 3 | right| 50 |
| 2 | left | 70 |
| 3 | left | 110 |
我想按 ID 分组,然后减去该 ID 的价格。如果left > right的价格,那么ID必须设置为left,价格应该是left_price - right_price,同样如果right > left,最终价格将与left_price - right_price相同。
上面的输出应该是这样的:
| ID | Side | Price |
| 1 | left | 100 |
| 2 | right| 20 |
| 3 | left | -60 |
我正在使用 python-2.7。这是我到目前为止(或正在尝试编写)编写的代码
id_group = df.sort_values(['ID','Side'])
id_group = df.groupby(['ID'])['Price'].diff().fillna(df['Price'])
【问题讨论】:
-
(不是投反对票的人)-这个问题可能被投反对票,因为您自己解决这个问题的努力还没有显示出来。请更新问题以表明您尝试自己解决此问题。
-
另外,由于 Python
-
我知道,但我无法更新它。它与工作有关。
-
我解决了你的问题,但我猜你的描述是错误的。你的最终结果应该是 {1: ['left', 100], 2: ['right', 20], 3: ['left', 60]},而不是 {1: ['left', 100], 2:['右',20],3:['左',-60]}。因为你是从高点减去低点。
-
不,价格必须遵循相同的模式。像减法一样应该从一侧到另一侧进行。不像正常情况下从大到小。
标签: python pandas python-2.7 group-by pandas-groupby