python - Pandas:减去分组最小值

标签 python pandas dataframe

我有一个数据框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/

相关文章:

python - 如何强制 scipy.optimize.curve_fit 修复第一点?

python - Pandas 合并两个具有相同结构的数据框

python - 如果我没有从数据库中找到某些数据,如何添加信息?

r - 如何从前一行(r 中不同列)的值中减去一列中的值

python - 以秒为单位将整列转换为小时( Pandas )

python - 删除 pandas 数据帧 groupby 中的最后 n 行

python - 梯度下降是发散的

python - 奇怪的 python 搜索路径行为,这里出了什么问题?

python - 在 Python 中使用 pyodbc 和 SQL join 语句

python - Lambda 函数和变量作用域