我有两个列表“ 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]
答案 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数据帧,所以在这种特定情况下,其他解决方案更为有用。