gpt4 book ai didi

python - Pandas - 从日期列表中获取每个月的最后一个日期

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:45 25 4
gpt4 key购买 nike

我有一个相当简单的问题,但找不到一个干净的 pandas 解决方案。

给定如下一系列日期列表:

LoadedDate
0 2016-02-18
1 2016-02-19
2 2016-02-20
3 2016-02-23
4 2016-02-24
5 2016-02-25
6 2016-02-26
7 2016-02-27
8 2016-03-01
9 2016-03-02
10 2016-03-03
11 2016-03-04
12 2016-03-05
13 2016-03-08
14 2016-03-09
15 2016-03-10
16 2016-03-11
17 2016-03-12
18 2016-03-15
19 2016-03-16
20 2016-03-17
21 2016-03-18
22 2016-03-19
23 2016-03-22
24 2016-03-23
25 2016-03-24
26 2016-03-25
27 2016-03-30
28 2016-03-31
29 2016-04-01
30 2016-04-02
31 2016-04-05
32 2016-04-06
33 2016-04-07
34 2016-04-08
35 2016-04-09
36 2016-04-12
37 2016-04-13
38 2016-04-14
39 2016-04-15
40 2016-04-16
41 2016-04-19
42 2016-04-20
43 2016-04-21
44 2016-04-22
45 2016-04-23
46 2016-04-27
47 2016-04-28
48 2016-04-29
49 2016-04-30
50 2016-05-02
51 2016-05-03
52 2016-05-04

我想提取每个月的最后一个/最大日期。所以输出将是:

LastDate
0 2016-02-27
1 2016-03-31
2 2016-04-29
3 2016-05-04

我尝试了 df.set_index('LoadedDate').groupby(pd.Grouper(freq='M')).max() 但它返回了最大日历日期,而不是实际的最大我的系列的加载日期。

谢谢。

最佳答案

你可以使用

In [300]: df.groupby(df.LoadedDate.astype('datetime64[M]')).last().reset_index(drop=True)
Out[300]:
LoadedDate
0 2016-02-27
1 2016-03-31
2 2016-04-30
3 2016-05-04

或者,

In [295]: df.groupby(df.LoadedDate - pd.offsets.MonthEnd()).last().reset_index(drop=True)
Out[295]:
LoadedDate
0 2016-02-27
1 2016-03-31
2 2016-04-30
3 2016-05-04

或者,

In [301]: df.groupby(df.LoadedDate.dt.to_period('M')).last().reset_index(drop=True)
Out[301]:
LoadedDate
0 2016-02-27
1 2016-03-31
2 2016-04-30
3 2016-05-04

或者,

In [303]: df.groupby(df.LoadedDate.astype(str).str[:7]).last().reset_index(drop=True)
Out[303]:
LoadedDate
0 2016-02-27
1 2016-03-31
2 2016-04-30
3 2016-05-04

如果日期没有排序。使用上述任何方法使用 idxmaxloc

In [307]: df.loc[df.groupby(df.LoadedDate.astype(str).str[:7]).LoadedDate.idxmax().values]
Out[307]:
LoadedDate
7 2016-02-27
28 2016-03-31
49 2016-04-30
52 2016-05-04

关于python - Pandas - 从日期列表中获取每个月的最后一个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52107914/

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