2015-09-08 23 views
-1

例如,我有以下的數據幀:如何更改從月初到月末日在dateframe在Python

index  0 
2000-03-01 4.03333 
2000-06-01 3.93333 
2000-09-01 4.0 
2000-12-01 3.9 
2001-03-01 4.23333 
2001-06-01 4.4 

指數爲pandas.tseries。 index.DatetimeIndex類型。我想從月初到月底的指數變化,例如,所有指數的2000-03-012000-03-31。我怎樣才能做到這一點?

+0

我試圖用datetime.replace()函數來代替一天。但不知何故,它不起作用。 –

+1

考慮爲他人提供最少量的代碼來檢查和解決您遇到的問題... –

+0

http://stackoverflow.com/help/how-to-ask –

回答

1

您可以使用tseries.offsets和使用MonthEnd

In [143]: 
from pandas.tseries.offsets import * 
df.index += MonthEnd() 
df 

Out[143]: 
        0 
index    
2000-03-31 4.03333 
2000-06-30 3.93333 
2000-09-30 4.00000 
2000-12-31 3.90000 
2001-03-31 4.23333 
2001-06-30 4.40000 
0

這裏如何將索引轉移到每個月末。您可以通過更改freq參數來選擇不同的頻率(請參閱Offset Aliases)。

# Sample data 
df = pd.DataFrame({'0': [4.0333300000000003, 
    3.9333300000000002, 
    4.0, 
    3.8999999999999999, 
    4.2333300000000005, 
    4.4000000000000004]}, 
index = pd.to_datetime(['2000-03-01', 
    '2000-06-01', 
    '2000-09-01', 
    '2000-12-01', 
    '2001-03-01', 
    '2001-06-01'])) 

# Shifting 
df.shift(periods=1, freq='M') 

        0 
2000-03-31 4.03333 
2000-06-30 3.93333 
2000-09-30 4.00000 
2000-12-31 3.90000 
2001-03-31 4.23333 
2001-06-30 4.40000 
+0

2000-09-29,這是一個問題,它應該是2000-09-30 –

+0

我已經更新了我的答案。現在用'M'頻率是正確的。 – Romain

相關問題