我有两个文件,一个包含数据,一个用于比较。 在文件1中有两列。元素与元素的名称,以及A与值。 在文件2中,有相同元素的阈值,尽管它们的名称略有不同,并且顺序也不相同。
我要做的是在文件2中搜索文件1中的元素。当元素之间匹配时,我将把文件1中的值与文件2中的阈值进行比较。我可以带有str.match或str.contains的内容,但是这些仅返回True / False,并且不允许我继续工作。我尝试使用in运算符进行for循环,但是仅当两个文件中元素的顺序相同时,此方法才有效。而且,我知道应该避免数据帧的循环。
for j in File2['element']:
if j in File1['element']:
print(j)
解决此问题的最佳方法是什么?
文件1:
element A
aa 6.2
bb 3.1
cc 4.7
要比较的文件2:
element D E F
bb(b) 1 2 3
aa(a) 1 5 10
cc(c) 10 20 30
答案 0 :(得分:0)
从 file_2 中的细微变化开始。 我的意思是提取 element 的“第一部分”(在左括号之前) 并将其设置为索引:
file_2.set_index(file_2.element.str.extract(r'(?P<elem>\w+)').elem, inplace=True)
然后您可以:
执行此操作的代码是:
file_1.set_index('element').join(file_2, how='left')\
.drop(columns=['element'])
现在您拥有:
A D E F
element
aa 6.2 1 5 10
bb 3.1 1 2 3
cc 4.7 10 20 30
其中:
这样,您就不受限于 file_2 中的行顺序。
然后,对于每一行,您可以在 A 之间进行一些比较 和重新命名列。