2017-02-14 22 views
2

我有疑問。我有一個數據幀DF,我需要改變的最後一行的索引,這可能是容易的,但我有麻煩做:重命名熊貓數據框的最後一個索引並強制使用dtypes

   A B 
2017-02-09 2.4 3.4 
2017-02-10 3.4 3.2 
2017-02-13 3.3 2.2 
0   3.1 2.1 

我需要改變的是「0」指數在最後一排今天的日期是2017-02-14,我該怎麼做?

我曾嘗試:

df.set_index[len(df)-1](dt.date.today()) 

其中DT代表日期時間。它不起作用,有什麼想法?非常感謝您

回答

2

你可以使用DF.renamedict映射成隨着指數軸標籤,如下所示:

import datetime 

df.rename({df.index[-1]: datetime.date.today()}, inplace=True) 
df.index = pd.to_datetime(df.index) # Convert dtype to DateTimeIndex 

enter image description here

檢查dtypes

df.index.dtype 
dtype('<M8[ns]') 

備註:您不能使用set_index[..],因爲它們指的是不可下標的內置方法。相反,你必須像使用圓括號的set_index(..)一樣使用它。


一個簡潔的方式通過指標轉換爲它要挾dtypes在一個在線的系列代表性及replacing剛剛過去的值與今天的日期:

df.index = pd.to_datetime(df.index.to_series().replace({df.index[-1]:datetime.date.today()})) 

給出:

df.index 
DatetimeIndex(['2017-02-09', '2017-02-10', '2017-02-13', '2017-02-14'], 
       dtype='datetime64[ns]', freq=None) 
+1

這太棒了,非常感謝你,我真的被卡住了 – WhelanG

0
ind = df.index.tolist() 
ind[len(ind)-1] = dt.date.today() 
df.index = ind