1
我有一個DF在那裏我計算領域Assitance減少代碼和週期時間線
account Total Start Date End Date EMI
211829 107000 05/19/17 01/22/19 5350
320563 175000 08/04/17 10/30/18 12500
648336 246000 02/26/17 08/25/19 8482.7586206897
109996 175000 11/23/17 11/27/19 7291.6666666667
121213 317000 09/07/17 04/12/18 45285.7142857143
然後填充EMI值根據日期範圍創建類似1月17日的新領域,2月17日,3月17日等,並填寫下面的代碼。
jant17 = pd.to_datetime('2017-01-01')
febt17 = pd.to_datetime('2017-02-01')
mart17 = pd.to_datetime('2017-03-01')
jan17 = pd.to_datetime('2017-01-31')
feb17 = pd.to_datetime('2017-02-28')
mar17 = pd.to_datetime('2017-03-31')
df.ix[(df['Start Date'] <= jan17) & (df['End Date'] >= jant17) , 'Jan17'] = df['EMI']
但缺點是,當我必須做一個預測,直到2019年或2020年,他們成爲了代碼太多行寫,當有任何更新我需要修改的代碼行數太多。爲了減少代碼行,我嘗試了使用for循環的替代方法,但代碼開始花費很長時間才能執行。
monthend = { 'Jan17' : pd.to_datetime('2017-01-31'),
'Feb17' : pd.to_datetime('2017-02-28'),
'Mar17' : pd.to_datetime('2017-03-31')}
monthbeg = { 'Jant17' : pd.to_datetime('2017-01-01'),
'Febt17' : pd.to_datetime('2017-02-01'),
'Mart17' : pd.to_datetime('2017-03-01')}
for mend in monthend.values():
for mbeg in monthbeg.values():
for coln in colnames:
df.ix[(df['Start Date'] <= mend) & (df['End Date'] >= mbeg) , coln] = df['EMI']
這極大地減少了代碼行數,但增加了執行時間從3-4分鐘到1小時加。有沒有更好的辦法用更少的線條和較小的處理時間
非常感謝你的完美工作。你是個天才。 –