对于飞机,我有两列到达和出发:
我的程序要求用户提供两个列表:
我需要浏览两列,并从用户给我的出发清单中提取出出发机场与到达清单中的到达机场相匹配的行。
答案 0 :(得分:0)
假设departure
和arrival
的长度相同,因此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.isin
与iloc
一起使用:
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)