2017-05-18 166 views
1

我有一個數據幀df與列date,並從中我想減去date最小的分組(由PID分組)。熊貓:減去Groupwise最小

所以,我計算出的最小的GroupWise的是這樣的: df.groupby(by="PID").min()

,想減去它在那裏我stucked: 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 | 
+0

它會更容易用你的數據的一些例子來回答這個問題(比如5個第一行) –

回答

2

我想你想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