簡體   English   中英

將多索引中的日期時間設置為該月的最后一天

[英]Setting the datetime in a multiindex to last day of the month

我有一個 Multiindex Dataframe 並且想更改日期級別,以便我每個月的最后一個值的日期更改為該月的最后一天。 任何幫助表示贊賞。

DataFrame (rolling_cov) 123610行×10列:

  Date                                 NoDur         Durbl           Manuf
  2018-12-27     NoDur                 0.000109      0.000112        0.000118
                 Durbl                 0.000112      0.000339        0.000238
                 Manuf                 0.000118      0.000238        0.000246
  2018-12-28     NoDur                 0.000109      0.000113        0.000117
                 Durbl                 0.000113      0.000339        0.000239
                 Manuf                 0.000117      0.000239        0.000242
  2018-12-31     NoDur                 0.000109      0.000113        0.000118
                 Durbl                 0.000113      0.000339        0.000239
                 Manuf                 0.000118      0.000239        0.000245

我試過的代碼:

rolling_cov.index= 
rolling_cov.index.set_levels([rolling_cov.index.levels[0].
         apply(pd.to_datetime(df['Date'] , format="%Y%m") + MonthEnd(1))])

我收到的錯誤:

'DatetimeIndex' object has no attribute 'apply'

首先將其轉換為系列,更改值,然后用新索引替換原始索引可能更容易。

idx = df.index.levels[0]

ser = pd.Series(idx)
last_of_mon = ser.groupby(ser.dt.year * 100 + ser.dt.month).last()

ser = ser.apply(
    lambda x: x + pd.offsets.MonthBegin(1) - pd.offsets.Day(1)
        if x in last_of_mon.values
        else x
)

df.index.set_levels(ser, 0, inplace=True)

請注意, + pd.offsets.MonthBegin(1) - pd.offsets.Day(1)用於更改為月末。 如果您在已經是本月最后一天的日期使用+ pd.offsets.MonthEnd(1) ,則會將其更改為下個月的最后一天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM