gpt4 book ai didi

python - 将多索引中的日期时间设置为该月的最后一天

转载 作者:行者123 更新时间:2023-12-04 01:03:54 24 4
gpt4 key购买 nike

我有一个多索引数据框,我想更改日期级别,以便将每个月的最后一个值的日期更改为该月的最后一天。感谢您的帮助。

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),它会将其更改为下个月的最后一个。

关于python - 将多索引中的日期时间设置为该月的最后一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67145546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com