gpt4 book ai didi

python - 如何在 Pandas DataFrame 索引中获取每个月的最后一天(使用 TimeGrouper)

转载 作者:行者123 更新时间:2023-12-04 11:21:36 50 4
gpt4 key购买 nike

我有一个日期不完整的 DataFrame,我只需要每个月最后一天可用的日期/行。
我尝试使用 TimeGrouper 并取 .last()每组的。

import pandas as pd
idx = [pd.datetime(2016,2,1),pd.datetime(2017,1,20),pd.datetime(2017,2,1),pd.datetime(2017,2,27)]
df = pd.DataFrame([1,2,3,4],index=idx)
df
0
2016-02-01 1
2017-01-20 2
2017-02-01 3
2017-02-27 4

期待:
df_eom
0
2016-02-01 1
2017-01-20 2
2017-02-27 4

但是我得到了这个:
df_eom = df.groupby(pd.TimeGrouper(freq='1M')).last()
df_eom
0
2016-02-29 1.0
2016-03-31 NaN
2016-04-30 NaN
2016-05-31 NaN
2016-06-30 NaN
2016-07-31 NaN
2016-08-31 NaN
2016-09-30 NaN
2016-10-31 NaN
2016-11-30 NaN
2016-12-31 NaN
2017-01-31 2.0
2017-02-28 4.0

它不仅创建了不在 df 中的日期,而且还更改了 df 第一行和最后一行的索引。我使用 TimeGrouper 错了吗?

最佳答案

这是一种方法

In [795]: df.iloc[df.reset_index().groupby(df.index.to_period('M'))['index'].idxmax()]
Out[795]:
0
2016-02-01 1
2017-01-20 2
2017-02-27 4

或者
In [802]: df.loc[df.groupby(df.index.to_period('M')).apply(lambda x: x.index.max())]
Out[802]:
0
2016-02-01 1
2017-01-20 2
2017-02-27 4

关于python - 如何在 Pandas DataFrame 索引中获取每个月的最后一天(使用 TimeGrouper),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48288059/

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