Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python dict和list中元组的列表理解_Python_Pandas_List Comprehension_Dictionary Comprehension - Fatal编程技术网

Python dict和list中元组的列表理解

Python dict和list中元组的列表理解,python,pandas,list-comprehension,dictionary-comprehension,Python,Pandas,List Comprehension,Dictionary Comprehension,我试图找出如何从以下数据创建日期:血管元组组合列表: 船只清单 船只到达日期的清单 计划时间表中的日期列表 (船只,日期)需要包含从船只到达日期算起的日期范围内所有可能的船只:日期组合(船只到达之前不能离开) 所需输出:示例 horizon dates = ['2020-01-01', '2020-01-02', '2020-01-03'] vessels = ['A'] vessel_arrival_date = {'A':'2020-01-02'} 船舶“A”的到达日期为“2020-0

我试图找出如何从以下数据创建日期:血管元组组合列表:

  • 船只清单
  • 船只到达日期的清单
  • 计划时间表中的日期列表
(船只,日期)需要包含从船只到达日期算起的日期范围内所有可能的船只:日期组合(船只到达之前不能离开)

所需输出:示例

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')]
到目前为止,我已经在一个理解范围内尝试了两种方法,使用熊猫数据框来提取日期

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()
让我们试试这个:

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()

使用列表理解是一项要求吗?用其他工具做怎么样?这不是一个严格的要求不-最终这将成为一个纸浆变量字典使用列表理解的要求?用其他工具做怎么样?这不是一个严格的要求不-最终这将成为一个纸浆变量字典-这正是我想要的-非常感谢…我从来没有想过用这种方式去做!这正是我想要的——非常感谢……我从来没有想过要这样做!