약 3500 개의 레코드가있는 테이블이 있습니다.Python은 중복 시간을 기준으로 데이터를 병합하고 병합합니다.
루프를 통해 각 레코드의 2, 3, 4 일 수있는 UNIQUEID라는 필드를 기반으로 중복 된 레코드를 찾으려고합니다. 내 최종 목표는 동일 UNIQUEID 값이 레코드를 병합하는 것이지만, 다른 RTYPE 내가 내 중복을 발견 할 때, 내가 RTYPE을 확인하려면 지금
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
값과 RTYPE이 다른 경우, 다음 알아 내기 위해 수학을하는 하나는 시간에 가장 가깝고 그 두 개를 병합합니다.
위의 표에서 레코드 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
예상 출력을 표시 할 수 있습니까? – akilat90
은'df.groupby()'가 도움이 될 것입니다! – ileadall42
어떤 오류 또는 잘못된 출력이 나옵니까? – Erica