我有一個 csv 檔案,如果它們共享相同的地址,我會將它們組合在一起。這些組包含大約 1 - 10 行。我需要根據每個組第一行第四列中的日期對這些組進行排序。
下面是我的資料的偽插圖,下面是我的代碼。
list_of_parcel_groups = [ [ [ [0,1,2,11/22/2022],[0,1,2,01/01/2001] ] , [ [0,1,2,3/11/2022],[0,1,2,3/4/2016],[0,1,2,5/18/2011],[0,1,2,03/13/2009] ] , [ [0,1,2,5/13/2019],[0,1,2,4/20/2018],[0,1,2,7/13/1999] ] ]
我想對 list_of_parcel_groups 進行排序并將其附加到合格的,使其看起來像這樣......
qualified = [ [0,1,2,5/13/2019],[0,1,2,4/20/2018],[0,1,2,7/13/1999],[0,1,2,3/11/2022],[0,1,2,3/4/2016],[0,1,2,5/18/2011],[0,1,2,03/13/2009],[0,1,2,11/22/2022],[0,1,2,01/01/2001] ]
我正在根據日期進行排序
list_of_parcel_groups[0][0][3]
list_of_parcel_groups[1][0][3]
list_of_parcel_groups[2][0][3]
for i in range(len(list_of_parcel_groups)):
if i == 0:
string_input_with_date = list_of_parcel_groups[i][0][3]
date = datetime.strptime(string_input_with_date, "%m/%d/%Y")
for item in list_of_parcel_groups[i]:
qualified.append(item)
continue
string_input_with_date1 = list_of_parcel_groups[i][0][3]
date1 = datetime.strptime(string_input_with_date1, "%m/%d/%Y")
if (date1.date() <= date.date()):
list_of_parcel_groups[i].reverse()
for item in list_of_parcel_groups[i]:
qualified.insert(0,item)
list_of_parcel_groups[i].reverse()
date = string_input_with_date = list_of_parcel_groups[i][0][3]
date = datetime.strptime(string_input_with_date, "%m/%d/%Y")
continue
if (date1.date() > date.date()):
for item in list_of_parcel_groups[i]:
qualified.append(item)
date = string_input_with_date = list_of_parcel_groups[i][0][3]
date = datetime.strptime(string_input_with_date, "%m/%d/%Y")
我嘗試將組的每個元素插入到陣列的索引 0 中,只要它早于前一個日期,并且每當日期晚于前一個日期時,將組的每一行附加到陣列的末尾。
這并沒有給我我想要做的排序結果。
另請注意,每個組已經以正確的方式按日期排序。這就是為什么當我使用 insert() 函式時,我反轉()組并在 insert() 之后再次反轉()它,以便我仍然可以使用 list_of_parcel_groups[i][0][3] 分配給變數“日期”,以便我可以將其與下一個回圈中的日期進行比較。
uj5u.com熱心網友回復:
如果我已經正確理解了您的原始資料的構造,那么這應該會給您您正在尋找的東西 - 不是嗎?
from datetime import datetime
list_of_parcel_groups = [[[0,1,2,'11/22/2022'], [0,1,2,'1/01/2001']] ,
[[0,1,2,'3/11/2022'], [0,1,2,'3/04/2016'], [0,1,2,'5/18/2011'], [0,1,2,'3/13/2009']],
[[0,1,2,'5/13/2019'], [0,1,2,'4/20/2018'], [0,1,2,'7/13/1999']]]
qualified = sorted(list_of_parcel_groups, key = lambda x: datetime.strptime(x[0][3], "%m/%d/%Y"))
for sublist in qualified:
print (sublist)
# Result:
# [[0, 1, 2, '5/13/2019'], [0, 1, 2, '4/20/2018'], [0, 1, 2, '7/13/1999']]
# [[0, 1, 2, '3/11/2022'], [0, 1, 2, '3/04/2016'], [0, 1, 2, '5/18/2011'], [0, 1, 2, '3/13/2009']]
# [[0, 1, 2, '11/22/2022'], [0, 1, 2, '1/01/2001']]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/532270.html
