我有一个数据框df
,其中包含date
列,我想从中减去分组(按PID
分组)的最小值日期
。
所以我计算了分组最小值,如下所示:
df.groupby(by="PID").min()
并想在我陷入困境的地方减去它:
df['日期'] = df['日期'] - ???
下一步是什么?或者有没有更简单的方法?
我的数据看起来像这样:
----------------------------
| PID | DATE |
----------------------------
| 5 | 2017-05-05 |
| 7 | 2016-10-04 |
| 7 | 2017-05-03 |
| 5 | 2016-12-20 |
| 5 | 2017-02-01 |
最佳答案
我想你想要transform
,它返回与 df
具有相同索引的 Series
,因此可以减去列:
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
关于python - Pandas:减去分组最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44047506/