簡體   English   中英

對字典和列表中的元組的列表理解

[英]list comprehension of tuples from dict and lists

我試圖弄清楚如何從以下數據創建日期列表:容器元組組合:

  • 船只清單
  • 船舶到達日期列表
  • 計划時間表中的日期列表

(vessel, date) 需要包含所有可能的vessel:date 組合在日期范圍FROM 船只到達日期(船只在到達之前不能離開)。

所需的 output:示例

horizon dates = ['2020-01-01', '2020-01-02', '2020-01-03']
vessels = ['A']
vessel_arrival_date = {'A':'2020-01-02'}

船'A'的到達日期是'2020-01-02',因此可能的出發日期的元組是:

departure_date_tuple = [('A', '2020-01-02'), ('A', '2020-01-03')]

到目前為止,我已經在理解范圍內嘗試了兩種方法,使用 pandas dataframe 來提取日期

departure_dates = [(vessel, date) for vessel in vessels for date in sorted(dates_ser.loc[vessel_notice_of_readiness_date[vessel]:, 'dates'])] 

然而,這些產生了每個船只/日期組合,並沒有考慮到船只在到達之前不能離開的事實。

數據如下:

dates = ['2020-05-28',
 '2020-05-29',
 '2020-05-30',
 '2020-05-31',
 '2020-06-01',
 '2020-06-02',
 '2020-06-03',
 '2020-06-04',
 '2020-06-05',
 '2020-06-06',
 '2020-06-07',
 '2020-06-08',
 '2020-06-09',
 '2020-06-10',
 '2020-06-11']

vessels = ['AM OCEAN SILVER',
 'APJ ANGAD 2',
 'AQUATONKA',
 'ARUN',
 'BAY OF NAPLES',
 'BOMER OYSTER',
 'BULK JAPAN',
 'CCSC YASA JING',
 'CEYLON BREEZE',
 'CHANG HANG HAO HAI',
 'FURIOUS',
 'HAIFA ROSHANA',
 'HARALAMBOS',
 'IKAN PULAS',
 'KANG XIN HAI',
 'MAMBO',
 'MOORING LINE',
 'PACIFIC MAJOR',
 'PELICAN',
 'PETER OLDENDORFF',
 'ROBUSTO',
 'Rahi',
 'SHTP',
 'CCSC ROBERTS BANK',
 'SUNRISE',
 'TIN CITY',
 'XIN FA HAI',
 'YASA UNITY']

vessel_arrival_date = {'CEYLON BREEZE': '2020-05-29',
 'PETER OLDENDORFF': '2020-05-29',
 'BULK JAPAN': '2020-05-29',
 'XIN FA HAI': '2020-05-29',
 'PACIFIC MAJOR': '2020-06-01',
 'CCSC YASA JING': '2020-06-01',
 'CHANG HANG HAO HAI': '2020-06-01',
 'ROBUSTO': '2020-06-01',
 'AQUATONKA': '2020-06-02',
 'ARUN': '2020-06-02',
 'HARALAMBOS': '2020-06-02',
 'MAMBO': '2020-06-02',
 'SHTP': '2020-06-05',
 'FURIOUS': '2020-06-05',
 'YASA UNITY': '2020-06-05',
 'AM OCEAN SILVER': '2020-06-05',
 'PELICAN': '2020-06-06',
 'BAY OF NAPLES': '2020-06-06',
 'TIN CITY': '2020-06-06',
 'MOORING LINE': '2020-06-06',
 'KANG XIN HAI': '2020-06-09',
 'Rahi': '2020-06-09',
 'APJ ANGAD 2': '2020-06-09',
 'SM ROBERTS BANK': '2020-06-09',
 'HAIFA ROSHANA': '2020-06-10',
 'IKAN PULAS': '2020-06-10',
 'SUNRISE': '2020-06-10',
 'BOMER OYSTER': '2020-06-10'}

讓我們試試這個:

df1 = pd.MultiIndex.from_product([dates,vessels], names=['dates','vessels']).to_frame(index=False)
df2 = pd.DataFrame.from_dict(vessel_arrival_date, orient='index').rename(columns={0:'ArrivalDate'})
list_of_Depart = df1.merge(df2, left_on='vessels', right_index=True)\
                    .query('ArrivalDate <= dates')\
                    .set_index(['vessels','dates']).index.tolist()

Output:

[('AM OCEAN SILVER', '2020-06-05'),
 ('AM OCEAN SILVER', '2020-06-06'),
 ('AM OCEAN SILVER', '2020-06-07'),
 ('AM OCEAN SILVER', '2020-06-08'),
 ('AM OCEAN SILVER', '2020-06-09'),
 ('AM OCEAN SILVER', '2020-06-10'),
 ('AM OCEAN SILVER', '2020-06-11'),
 ('APJ ANGAD 2', '2020-06-09'),
 ('APJ ANGAD 2', '2020-06-10'),
 ('APJ ANGAD 2', '2020-06-11'),
 ('AQUATONKA', '2020-06-02'),
 ('AQUATONKA', '2020-06-03'),
 ('AQUATONKA', '2020-06-04'),
 ('AQUATONKA', '2020-06-05'),
 ('AQUATONKA', '2020-06-06'),
 ('AQUATONKA', '2020-06-07'),
 ('AQUATONKA', '2020-06-08'),
 ('AQUATONKA', '2020-06-09'),
 ('AQUATONKA', '2020-06-10'),
 ('AQUATONKA', '2020-06-11'),
 ('ARUN', '2020-06-02'),
 ('ARUN', '2020-06-03'),
 ('ARUN', '2020-06-04'),
 ('ARUN', '2020-06-05'),
 ('ARUN', '2020-06-06'),
 ('ARUN', '2020-06-07'),
 ('ARUN', '2020-06-08'),
 ('ARUN', '2020-06-09'),
 ('ARUN', '2020-06-10'),
 ('ARUN', '2020-06-11'),
 ('BAY OF NAPLES', '2020-06-06'),
 ('BAY OF NAPLES', '2020-06-07'),
 ('BAY OF NAPLES', '2020-06-08'),
 ('BAY OF NAPLES', '2020-06-09'),
 ('BAY OF NAPLES', '2020-06-10'),
 ('BAY OF NAPLES', '2020-06-11'),
 ('BOMER OYSTER', '2020-06-10'),
 ('BOMER OYSTER', '2020-06-11'),
 ('BULK JAPAN', '2020-05-29'),
 ('BULK JAPAN', '2020-05-30'),
 ('BULK JAPAN', '2020-05-31'),
 ('BULK JAPAN', '2020-06-01'),
 ('BULK JAPAN', '2020-06-02'),
 ('BULK JAPAN', '2020-06-03'),
 ('BULK JAPAN', '2020-06-04'),
 ('BULK JAPAN', '2020-06-05'),
 ('BULK JAPAN', '2020-06-06'),
 ('BULK JAPAN', '2020-06-07'),
 ('BULK JAPAN', '2020-06-08'),
 ('BULK JAPAN', '2020-06-09'),
 ('BULK JAPAN', '2020-06-10'),
 ('BULK JAPAN', '2020-06-11'),
 ('CCSC YASA JING', '2020-06-01'),
 ('CCSC YASA JING', '2020-06-02'),
 ('CCSC YASA JING', '2020-06-03'),
 ('CCSC YASA JING', '2020-06-04'),
 ('CCSC YASA JING', '2020-06-05'),
 ('CCSC YASA JING', '2020-06-06'),
 ('CCSC YASA JING', '2020-06-07'),
 ('CCSC YASA JING', '2020-06-08'),
 ('CCSC YASA JING', '2020-06-09'),
 ('CCSC YASA JING', '2020-06-10'),
 ('CCSC YASA JING', '2020-06-11'),
 ('CEYLON BREEZE', '2020-05-29'),
 ('CEYLON BREEZE', '2020-05-30'),
 ('CEYLON BREEZE', '2020-05-31'),
 ('CEYLON BREEZE', '2020-06-01'),
 ('CEYLON BREEZE', '2020-06-02'),
 ('CEYLON BREEZE', '2020-06-03'),
 ('CEYLON BREEZE', '2020-06-04'),
 ('CEYLON BREEZE', '2020-06-05'),
 ('CEYLON BREEZE', '2020-06-06'),
 ('CEYLON BREEZE', '2020-06-07'),
 ('CEYLON BREEZE', '2020-06-08'),
 ('CEYLON BREEZE', '2020-06-09'),
 ('CEYLON BREEZE', '2020-06-10'),
 ('CEYLON BREEZE', '2020-06-11'),
 ('CHANG HANG HAO HAI', '2020-06-01'),
 ('CHANG HANG HAO HAI', '2020-06-02'),
 ('CHANG HANG HAO HAI', '2020-06-03'),
 ('CHANG HANG HAO HAI', '2020-06-04'),
 ('CHANG HANG HAO HAI', '2020-06-05'),
 ('CHANG HANG HAO HAI', '2020-06-06'),
 ('CHANG HANG HAO HAI', '2020-06-07'),
 ('CHANG HANG HAO HAI', '2020-06-08'),
 ('CHANG HANG HAO HAI', '2020-06-09'),
 ('CHANG HANG HAO HAI', '2020-06-10'),
 ('CHANG HANG HAO HAI', '2020-06-11'),
 ('FURIOUS', '2020-06-05'),
 ('FURIOUS', '2020-06-06'),
 ('FURIOUS', '2020-06-07'),
 ('FURIOUS', '2020-06-08'),
 ('FURIOUS', '2020-06-09'),
 ('FURIOUS', '2020-06-10'),
 ('FURIOUS', '2020-06-11'),
 ('HAIFA ROSHANA', '2020-06-10'),
 ('HAIFA ROSHANA', '2020-06-11'),
 ('HARALAMBOS', '2020-06-02'),
 ('HARALAMBOS', '2020-06-03'),
 ('HARALAMBOS', '2020-06-04'),
 ('HARALAMBOS', '2020-06-05'),
 ('HARALAMBOS', '2020-06-06'),
 ('HARALAMBOS', '2020-06-07'),
 ('HARALAMBOS', '2020-06-08'),
 ('HARALAMBOS', '2020-06-09'),
 ('HARALAMBOS', '2020-06-10'),
 ('HARALAMBOS', '2020-06-11'),
 ('IKAN PULAS', '2020-06-10'),
 ('IKAN PULAS', '2020-06-11'),
 ('KANG XIN HAI', '2020-06-09'),
 ('KANG XIN HAI', '2020-06-10'),
 ('KANG XIN HAI', '2020-06-11'),
 ('MAMBO', '2020-06-02'),
 ('MAMBO', '2020-06-03'),
 ('MAMBO', '2020-06-04'),
 ('MAMBO', '2020-06-05'),
 ('MAMBO', '2020-06-06'),
 ('MAMBO', '2020-06-07'),
 ('MAMBO', '2020-06-08'),
 ('MAMBO', '2020-06-09'),
 ('MAMBO', '2020-06-10'),
 ('MAMBO', '2020-06-11'),
 ('MOORING LINE', '2020-06-06'),
 ('MOORING LINE', '2020-06-07'),
 ('MOORING LINE', '2020-06-08'),
 ('MOORING LINE', '2020-06-09'),
 ('MOORING LINE', '2020-06-10'),
 ('MOORING LINE', '2020-06-11'),
 ('PACIFIC MAJOR', '2020-06-01'),
 ('PACIFIC MAJOR', '2020-06-02'),
 ('PACIFIC MAJOR', '2020-06-03'),
 ('PACIFIC MAJOR', '2020-06-04'),
 ('PACIFIC MAJOR', '2020-06-05'),
 ('PACIFIC MAJOR', '2020-06-06'),
 ('PACIFIC MAJOR', '2020-06-07'),
 ('PACIFIC MAJOR', '2020-06-08'),
 ('PACIFIC MAJOR', '2020-06-09'),
 ('PACIFIC MAJOR', '2020-06-10'),
 ('PACIFIC MAJOR', '2020-06-11'),
 ('PELICAN', '2020-06-06'),
 ('PELICAN', '2020-06-07'),
 ('PELICAN', '2020-06-08'),
 ('PELICAN', '2020-06-09'),
 ('PELICAN', '2020-06-10'),
 ('PELICAN', '2020-06-11'),
 ('PETER OLDENDORFF', '2020-05-29'),
 ('PETER OLDENDORFF', '2020-05-30'),
 ('PETER OLDENDORFF', '2020-05-31'),
 ('PETER OLDENDORFF', '2020-06-01'),
 ('PETER OLDENDORFF', '2020-06-02'),
 ('PETER OLDENDORFF', '2020-06-03'),
 ('PETER OLDENDORFF', '2020-06-04'),
 ('PETER OLDENDORFF', '2020-06-05'),
 ('PETER OLDENDORFF', '2020-06-06'),
 ('PETER OLDENDORFF', '2020-06-07'),
 ('PETER OLDENDORFF', '2020-06-08'),
 ('PETER OLDENDORFF', '2020-06-09'),
 ('PETER OLDENDORFF', '2020-06-10'),
 ('PETER OLDENDORFF', '2020-06-11'),
 ('ROBUSTO', '2020-06-01'),
 ('ROBUSTO', '2020-06-02'),
 ('ROBUSTO', '2020-06-03'),
 ('ROBUSTO', '2020-06-04'),
 ('ROBUSTO', '2020-06-05'),
 ('ROBUSTO', '2020-06-06'),
 ('ROBUSTO', '2020-06-07'),
 ('ROBUSTO', '2020-06-08'),
 ('ROBUSTO', '2020-06-09'),
 ('ROBUSTO', '2020-06-10'),
 ('ROBUSTO', '2020-06-11'),
 ('Rahi', '2020-06-09'),
 ('Rahi', '2020-06-10'),
 ('Rahi', '2020-06-11'),
 ('SHTP', '2020-06-05'),
 ('SHTP', '2020-06-06'),
 ('SHTP', '2020-06-07'),
 ('SHTP', '2020-06-08'),
 ('SHTP', '2020-06-09'),
 ('SHTP', '2020-06-10'),
 ('SHTP', '2020-06-11'),
 ('SUNRISE', '2020-06-10'),
 ('SUNRISE', '2020-06-11'),
 ('TIN CITY', '2020-06-06'),
 ('TIN CITY', '2020-06-07'),
 ('TIN CITY', '2020-06-08'),
 ('TIN CITY', '2020-06-09'),
 ('TIN CITY', '2020-06-10'),
 ('TIN CITY', '2020-06-11'),
 ('XIN FA HAI', '2020-05-29'),
 ('XIN FA HAI', '2020-05-30'),
 ('XIN FA HAI', '2020-05-31'),
 ('XIN FA HAI', '2020-06-01'),
 ('XIN FA HAI', '2020-06-02'),
 ('XIN FA HAI', '2020-06-03'),
 ('XIN FA HAI', '2020-06-04'),
 ('XIN FA HAI', '2020-06-05'),
 ('XIN FA HAI', '2020-06-06'),
 ('XIN FA HAI', '2020-06-07'),
 ('XIN FA HAI', '2020-06-08'),
 ('XIN FA HAI', '2020-06-09'),
 ('XIN FA HAI', '2020-06-10'),
 ('XIN FA HAI', '2020-06-11'),
 ('YASA UNITY', '2020-06-05'),
 ('YASA UNITY', '2020-06-06'),
 ('YASA UNITY', '2020-06-07'),
 ('YASA UNITY', '2020-06-08'),
 ('YASA UNITY', '2020-06-09'),
 ('YASA UNITY', '2020-06-10'),
 ('YASA UNITY', '2020-06-11')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM