Python可以根据时间查找重复数据和合并数据
问题描述:
我有一张包含大约3500条记录的表格。Python可以根据时间查找重复数据和合并数据
我想循环查找基于我创建的字段名称UNIQUEID,可能是每个记录2,3,4的重复项。我的最终目标是要合并具有相同UNIQUEID值的记录,但不同的舍入类型值
OID UNIQUEID RTYPE TIME OTHER
1 ABC_20170215 SENT 12:30 item1
2 ABC_20170215 RECEIVED 12:29
3 ABC_20170215 SENT 12:35 item4
现在,当我发现我的重复,我想检查舍入类型,如果舍入类型是不同的,然后做数学题,找出哪些一个是最接近的时间并合并这两个。
所以我最终的目标,在上面的表中,记录1和2将被合并,并且我不关心像RTYPE或TIME这样的列,但是如果有数据,我想保留它像OTHER这样的列。
所以这里是我到目前为止寻找重复的代码,我认为这给了我一些倍数问题。
###set up cursors
cursor1 = arcpy.da.SearchCursor(shp, ["UNIQUEID", "RTYPE"])
cursor2 = arcpy.da.SearchCursor(shp, ["UNIQUEID", "RTYPE"])
count = 0
#make a dictionary and store values from my table
idUnique = {}
for row in cursor1:
idUnique[row[0]] = row[0]
idUnique[row[1]] = row[1]
#loop through other table
for row in cursor2:
if row[0] == idUnique[row[0]]:
print "Row 1 {}".format(row[0]) + " --{}".format(row[1])
print "ID Row 1 {}".format(idUnique[row[0]]) + " --{}".format(idUnique[row[1]])
任何帮助将是惊人的!
我的预期产出将
OID UNIQUEID RTYPE TIME OTHER
1 ABC_20170215 <whatever> <whatever> item1
3 ABC_20170215 <whatever> <whatever> item4
答
我建议创建只有一个光标,为了让您的数据转换成字典,然后就从那里操纵数据的工作。既然你必须做一本字典来存储下一个循环的信息,不妨使用字典。 (我会建议只有在你通过不同的要素类将环的第二光标。)
unique_ids = []
all_data = {}
cursor = arcpy.da.SearchCursor(shp, ["FID", "UNIQUEID", "RTYPE", "TIME", "OTHER"])
for row in cursor:
if row[1] not in unique_ids:
unique_ids.append(row[1])
all_data[row[0]] = {
"uniqueid": row[1],
"rtype": row[2],
"time": row[3],
"other": row[4]
}
在这一点上,你就可以开始去翻翻字典,找到重复的,比较的属性,和确定要保留什么和丢弃什么。
你能显示预期的输出吗? – akilat90
可能是'df.groupby()'会帮助! – ileadall42
你得到了什么错误或不正确的输出? – Erica