我正在寻找一种方法来创建一个匹配数据帧中给定值的函数,这样如果在A列中找到匹配项,请检查B列是否匹配。我已在A列和B列中创建了要搜索的值列表。
A B C D
0 0.65 12.05 253.41 1.53
1 0.76 9.64 206.97 1.25
2 0.80 9.82 110.98 0.67
3 0.81 12.15 637.04 386.43
我目前用来执行此操作的代码相当于:
Sample = pd.read_csv("tableabove.csv")
Database = pd.read_csv("Databasefile.csv")
SearchVals_A = list(Sample["A"])
SearchVals_B = list(Sample["B"])
HitsColA = [Database[Database["A"].apply(np.isclose,b=i,atol=0.02)for i in SearchVals_A]
HitsColA2 = pd.concat(HitsColA)
HitsColB = [HitsColA2[HitsColA2["B"].apply(np.isclose,b=i,atol=0.02)for i in SearchVals_B]
HitsColB2 = pd.concat(HitsColB)
Final = HitsColB2.drop_duplicates(["A"])
这会创建一个匹配值的数据框,因此如果在匹配的A列中找到一个值,则会在该列数据框中搜索B列中的给定值,但我无法找到一种方法来关联&#34 ; BOTH值必须匹配。当我运行此方法时,它会在A列中找到0.76匹配,然后在列B中独立搜索值。但是如果这两个值在现实生活中相关联,那么如果索引1有一个值,它将在结果中给出错误命中它也在列B列表中的值。
有什么想法吗?
答案 0 :(得分:0)
您可以使用.tolist()
将列A和B更改为python列表。
然后,您可以简单地遍历每个列表并附加到包含所有匹配元素的新列表:
matching_vals = []
for val in specified_vals_list:
if val in list_A:
if val in list_B:
matching_vals.append(val)
else:
continue
else:
continue
print (matching_vals)