我有一个包含用户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