熊猫:减去分组最小值

时间:2017-05-18 12:15:36

标签: python pandas dataframe

我有一个数据框df,其中包含date列,我想从中减去PID的分组(按date分组)最小值。

所以我像这样计算了groupwise最小值: df.groupby(by="PID").min()

想在我被困的地方减去它: df['date'] = df['date'] - ???

这下一步是什么?或者有更简单的方法吗?

我的数据看起来像这样:

----------------------------
|   PID   |  DATE          |
----------------------------
|    5    |  2017-05-05    |
|    7    |  2016-10-04    |
|    7    |  2017-05-03    |
|    5    |  2016-12-20    |
|    5    |  2017-02-01    |

1 个答案:

答案 0 :(得分:2)

我认为您希望transform返回Series,其索引与df相同,因此可以减去列:

print (df.groupby(by="PID")['DATE'].transform('min'))
0   2016-12-20
1   2016-10-04
2   2016-10-04
3   2016-12-20
4   2016-12-20
Name: DATE, dtype: datetime64[ns]

df['new'] = df['DATE'] - df.groupby(by="PID")['DATE'].transform('min')
print (df)
   PID       DATE      new
0    5 2017-05-05 136 days
1    7 2016-10-04   0 days
2    7 2017-05-03 211 days
3    5 2016-12-20   0 days
4    5 2017-02-01  43 days