我有一個數據幀,看起來像這樣:的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' 我不想...... –