2017-05-25 127 views
1

我想用特定日期填寫一列。首先,我創建一個僅填充今天日期的日期列。然後,我計算我想要替換每個位置的日期。該索引採用以下格式:'%Y-%m-%d'如何替換熊貓數據框中列的日期?

計算效果良好。它是不起作用

還有就是我的最後一行代碼:

for j in range(1, 154): 
    result['LTD_' + str(j)] = dt.date(dt.datetime.now().year,dt.datetime.now().month,dt.datetime.now().day) #creating a column of dates filled with today day 
    for i in range(0, len(result.index)): 
     date_selected = result.iloc[[i]].index 
     date_month = add_months(date_selected,j) 
     delivery_month = date_month.month 
     delivery_year = date_month.year 
     delivery = dt.date(delivery_year, delivery_month, result[(result.index.month == (delivery_month)) & (result.index.year == delivery_year)].index.day.min()) 
     delloc = result.index.get_loc(str(delivery)) 
     ltdloc = delloc - 3 
     result.iloc[[i]]['LTD_' + str(j)] = dt.date(result.iloc[[ltdloc]].index.year, result.iloc[[ltdloc]].index.month, result.iloc[[ltdloc]].index.day) 

最後一行不起作用通過計算日期,以取代今天的日期。什麼都沒發生。 date.replace生成一個錯誤。

+0

什麼是錯誤?如果使用最後一行'result.iloc [[i]] ['LTD_'+ str(j)] = 0',那麼失敗了?如果使用'print(dt.date(result.iloc [[ltdloc]] .index.year,result.iloc [[ltdloc]] .index.month,result.iloc [[ltdloc]] .index.day))'它失敗了? – jezrael

+0

'result.iloc [[i]] ['LTD_'+ str(j)] = 0',什麼也沒有發生。我還有今天的日期('2017-05-25')。但是,'print(dt.date(result.iloc [[ltdloc]] .index.year,result.iloc [[ltdloc]] .index.month,result.iloc [[ltdloc]] .index.day))'在'result.iloc [[i]] ['LTD_'+ str(j)]''中替換''%Y-%m-%d''格式的好日期。 –

+0

嗯,沒有數據,它確實很難,但'result ['LTD_'+ str(j)]。iloc [i]'或'result ['LTD_'+ str(j)]。iloc [[i]]'應該有效。 – jezrael

回答

1

現在是ixdeprecated,所以需要loc與位置選擇指數:

result.loc[result.index[i], 'LTD_' + str(j)] = ... 

或者ilocget_loc列名的位置:

result.iloc[i, result.columns.get_loc('LTD_' + str(j))] = ... 

另一種解決方案是:

result['LTD_' + str(j)].iloc[[i]] = ... 
+0

'result ['LTD_'+ str(j)]。iloc [[i]]'解決了我的問題。非常感謝jezrael。 –

+0

我加它回答;) – jezrael

+0

如果我的回答很有幫助,不要忘記[接受](http://meta.stackexchange.com/a/5235/295067)它。謝謝。 – jezrael