使用python进行迭代搜索

时间:2019-05-08 12:07:49

标签: python-3.x pandas

我有两个列表“ OD_pair”和“ OD_list”。 OD_pair = [A             乙             C]

OD_list = [B             乙             一种             乙             一种             乙             C]

我正在编写一个python搜索来计算OD列表中重复的OD对数,并为结果添加另一列。例如: 我将从OD_pair中获取“ A”,转到“ OD_list”,计算“ OD列表”中有多少个“ A”,然后返回数字,并将其添加到OD对旁边。

#take OD pair from moira data
OD_pair = df_moira['OD_pair'] #OD pair list
#loop ticket gate data and count how many OD pair appears in ticket gate data
OD_list = df_ticket_gate['OD_PAIRS'] # OD list
i = 0
while i < len(OD_pair): # go to OD pair list
    OD = OD_pair(i) # take an iteam to search
    j = 0
    for j in OD_list:
        sum(1 for OD_pair in OD_list if OD = OD_list(j)) # search the item in OD list and count
    i += 1

结果将如下所示: OD_pair = [A 2             B 4             C 1]

2 个答案:

答案 0 :(得分:1)

如果您要查找的只是获得值列表中某项重复项的次数。您可以尝试使用此方法:

df = pd.DataFrame({'A':[1,2,3,4]})
df1 = pd.DataFrame({'B':[2,1,2,3,1,2,3,1,3]})

OD_pair = df[['A']]

OD_list = df1['B'].value_counts().to_frame().reset_index()

Output = OD_pair.merge(OD_list,'left',left_on = 'A',right_on = 'index')[['A','B']]

print(Output)

答案 1 :(得分:0)

使用纯python的更通用的解决方案是:

OD_pair = ['A','B','C']
OD_list = ['B','B','A','B','A','B','C']

results = {}
for val in OD_pair:
    results[val] = OD_list.count(val)
print(results)

这将给出:

{'A': 2, 'B': 4, 'C': 1}

尽管问题中显示的代码表明您正在使用pandas数据帧,所以在这种特定情况下,其他解决方案更为有用。