ArcPy&Python-如何获取最新的两个日期,按值分组?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (202)

我在表[编号]和[日期]中有两个字段。日期格式为日期和时间,因此:07/09/2018 3:30:30 PM。[number]字段只是一个整数,但每行可能具有相同的数字。

我尝试了几个选项来访问最新的日期,我可以使用Pandas获取这些:

myarray = arcpy.da.FeatureClassToNumPyArray (fc, ['number', 'date'])
mydf = pd.DataFrame(myarray)
date_index = mydf.groupby(['number'])['date'].transform(max)==mydf['date']

但是,我需要最新的两个日期。我已经开始尝试“IF”语句,因为我觉得arcpy.da.UpdateCursor更适合查看记录并通过按NUMBER分组并返回具有最新TWO日期的行来更新另一个字段。

最终结果希望看到下表按编号分组,最近两个日期(作为示例):

Number : Date
1       7/29/2018 4:30:44 PM
1       7/30/2018 5:55:34 PM
2       8/2/2018  5:45:23 PM
2       8/3/2018  6:34:32 PM
提问于
用户回答回答于

试试这个。

import pandas as pd
import numpy as np

# Some data.

data = pd.DataFrame({'number': np.random.randint(3, size = 15), 'date': pd.date_range('2018-01-01', '2018-01-15')})

# Look at the data.

data

它提供了如下一些样本数据:

所以在我们的输出中,我们会看到数字0和5和9,1表示14和15,2表示6和12。

然后,我们按数字分组,获取最后两行,并设置和排序索引。

# Group and label the index.

last_2 = data.groupby('number').tail(2).set_index('number').sort_index()

last_2

这给了我们所期望的

扫码关注云+社区

领取腾讯云代金券