如何比较两列并根据条件提取匹配项?

时间:2019-05-15 15:34:23

标签: python

对于飞机,我有两列到达出发

我的程序要求用户提供两个列表:

  • 您想要哪个出发机场?
  • 您想要哪些到达机场?

我需要浏览两列,并从用户给我的出发清单中提取出出发机场与到达清单中的到达机场相匹配的行。

3 个答案:

答案 0 :(得分:0)

假设departurearrival的长度相同,因此departure中的相同索引条目对应于arrival中的该索引条目,则只需要迭代通过一次::

num_flights = len(arrival)  # should equal len(departure)
common_indices = [i for i in range(num_flights) if departure[i] in departure_input_list and arrival[i] in arrival_input_list]

请注意if条件-我们检查出发是否可以接受以及到达是否可以接受,我们将彼此分开但同时进行。

答案 1 :(得分:0)

pandas.Series.isiniloc一起使用:

df.loc[df['departure'].isin(departure_input_list) & df['arrival'].isin(arrival_input_list)]

输出:

  departure arrival
3       JFK     BHL
5       LGB     BHL
6       LGA     WHP
7       NYC     WTC

答案 2 :(得分:0)

下面的代码应该可以工作。

# Source
departure = ['SAT','LAX','BDL','JFK','MCO','LGB','LGA','NYC','BOS']
arrival = ['SJU','LAX','BOS','BHL','EWR','BHL','WHP','WTC','LSQ']

# input
dep_input = ['FLU', 'JFK', 'JPB', 'JRA','JRE', 'LGA', 'NYC']
arr_input = ['BHL', 'LAX', 'LSQ', 'WHP']

source_dict = dict(zip(departure, arrival))
arrival_set = set(arr_input)  # converting to set for better performance O(1)
result_dep = filter(lambda x : source_dict.get(x, '') in arrival_set , dep_input)
print map(lambda y : (y, source_dict[y]) , result_dep)