我有一個包含用戶ID,觀察日期一個數據幀DF(通常每季度頻率,但也可以是不規則的)和特徵值,例如:轉換爲每月在大熊貓數據幀
from util.Dates import Dates, to_date
import pandas as pd
df = pd.DataFrame(dict(
RefIssuerId=[11590] * 3 + [115948] * 4,
AvailableDate=[to_date(d) for d in (20050613, 20050905, 20051214,
20040924, 20041101, 20050202,20050516)],
Characteristic=[0.06, 0.09, 0.07, 0.13, 0.09, 0.06, 0.04]))
UserID Date Characteristic
115950 6/13/2005 0.06
115950 9/5/2005 0.09
115950 12/14/2005 0.07
115948 9/24/2004 0.13
115948 11/1/2004 0.09
115948 2/2/2005 0.06
115948 5/16/2005 0.04
我正在嘗試將它上採樣到用戶組中的每月頻率。也就是說,希望得到這樣的不便(通過用戶名和日期排序)
UserID Date Characteristic month_date
115950 6/13/2005 0.06 6/30/2005
115950 6/13/2005 0.06 7/31/2005
115950 6/13/2005 0.06 8/31/2005
115950 9/5/2005 0.09 9/30/2005
115950 9/5/2005 0.09 10/31/2005
115950 9/5/2005 0.09 11/30/2005
115950 12/14/2005 0.07 12/31/2005
115950 12/14/2005 0.07 1/31/2006
115950 12/14/2005 0.07 2/28/2006
115948 9/24/2004 0.13 9/30/2004
115948 9/24/2004 0.13 10/31/2004
115948 11/1/2004 0.09 11/30/2004
115948 11/1/2004 0.09 12/31/2004
115948 11/1/2004 0.09 1/31/2005
115948 2/2/2005 0.06 2/28/2005
115948 2/2/2005 0.06 3/31/2005
115948 2/2/2005 0.06 4/30/2005
115948 5/16/2005 0.04 5/31/2005
115948 5/16/2005 0.04 6/30/2005
115948 5/16/2005 0.04 7/31/2005
注意,因爲下一個可日期是11/1/2004
,它在升取樣組產生的11/30/2004
month_date記錄115948 9/24/2004 0.13
被上取樣只有兩次。
試戴GROUPBY數據幀施加重採樣:
newdf=df.groupby(['UserID']).resample("M",fill_method='ffill')
但這並不產生所需的結果。任何指導/建議非常感謝。
請張貼實際的代碼來創建樣本數據。有很多與你的問題相關的東西不能從你對數據框的模糊描述中推斷出來。 – Goyo
我不明白最後2行輸出'df',你怎麼得到它。你能解釋一下嗎? – jezrael