我有一个数据帧,看起来像这样:的Python:填写缺少的日期为每个组
x = pd.DataFrame({'user': ['a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b','b'], 'rd': ['2016-01-01', '2016-01-01' ,
'2016-02-01', '2016-02-01', '2016-02-01', '2016-05-01', '2016-05-01',
'2016-06-01','2016-06-01', '2016-06-01'],
'fd' : ['2016-02-01', '2016-04-01', '2016-03-01', '2016-04-01', '2016-05-01',
'2016-06-01', '2016-07-01', '2016-08-01', '2016-07-01', '2016-09-01'],
'val': [3, 4, 16, 7, 9, 2, 5, 11, 20, 1]})
x.head(6)
fd rd user val
0 2016-02-01 2016-01-01 a 3
1 2016-04-01 2016-01-01 a 4
2 2016-03-01 2016-02-01 a 16
3 2016-04-01 2016-02-01 a 7
4 2016-05-01 2016-02-01 a 9
5 2016-06-01 2016-05-01 b 2
x['rd'] = pd.to_datetime(x['rd'])
x['fd'] = pd.to_datetime(x['fd'])
因为我想有未来3节月的日期各次日期。例如:
rd = 2016-01-01
我想有:
fd = [2016-02-01, 2016-03-01, 2016-04-01]
基本上是:每个RD日期我想在未来3个月FD日期。 在我的数据集中,我在012d和fd中都有缺失的日期,只要我有第(rd = 2016-01-01, fd missing = 2016-03-01)
日期。
此外,我有2个不同的用户x['user'].unique() = ['a', 'b']
。 因此,我可能在一个用户中,在另一个用户中或两者中缺少日期(包括'rd'和'fd')。
我想实现的是一个有效的方式来获取所有用户的所有日期的数据帧。
这个问题从已经回答的一个Question开始,但这里的问题稍微复杂一点,因为我无法使Multiindex适合手头的问题。
我所做的一切,直至现在是创建日期的2列:
index = pd.date_range(x['rd'].min(),
x['rd'].max(), freq='MS')
from datetime import datetime
from dateutil.relativedelta import relativedelta
def add_months(date):
fcs_dates = [date + relativedelta(months = 1), date + relativedelta(months = 2), date + relativedelta(months = 3)]
return fcs_dates
fcs_dates = list(map(lambda x: add_months(x), index.tolist()))
fcs_dates = [j for i in fcs_dates for j in i]
index3 = index.tolist()*3
index3.sort()
所以输出:
list(zip(index3, fcs_dates))[:5]
[(Timestamp('2016-01-01 00:00:00', freq='MS'),
Timestamp('2016-02-01 00:00:00', freq='MS')),
(Timestamp('2016-01-01 00:00:00', freq='MS'),
Timestamp('2016-03-01 00:00:00', freq='MS')),
(Timestamp('2016-01-01 00:00:00', freq='MS'),
Timestamp('2016-04-01 00:00:00', freq='MS')),
(Timestamp('2016-02-01 00:00:00', freq='MS'),
Timestamp('2016-03-01 00:00:00', freq='MS')),
(Timestamp('2016-02-01 00:00:00', freq='MS'),
Timestamp('2016-04-01 00:00:00', freq='MS'))]
不幸的是我不知道如何堵塞这为多指标函数线索。
谢谢您的帮助
谢谢你,我编辑的日期转换datetime的问题..它应该工作。 可惜这不是我要找的:做索引和fcs_dates之间的多产品给我也行这样的: 'RD = 2017-01-01' 'FD = 2017-07-01' 我不想...... –