<p>所以看起来您想要使用的是<code>merge</code>。据我所知,您希望在'q1'键上找到两个数据帧的内部连接。如果是这样,那么merge绝对是适合您的功能。它的使用方式如下:</p>
<p><code>series_join = series_1.merge(series_2, on='q1')</code></p>
<p>这样,它将找到q1的交集,并只选择匹配的数据对。如果您确实想在<code>q1</code>和<code>q2</code>上加入,您可以在此处传入一个数组(尽管这不会给出您想要的输出,因为<code>Bar5</code>无法与<code>Bar{5}</code>进行比较,不幸的是:</p>
<p><code>series_join = series_1.merge(series_2, on=['q1', 'q2'])</code></p>
<p>至于清除数据中的错误值以便以这种方式进行比较,我建议首先执行一个清理步骤,因为主合并步骤没有太多关于如何比较数据值的自定义</p>
<p>输出将包括一组重复的列,但您可以忽略这些列:</p>
<pre><code> id q1 q2_x q2_y
0 testProd_1 Foo1 Bar1 Bar1
1 testProd_2 Foo2 Bar2 Bar2
2 testProd_3 Foo3 Bar3 Bar3
3 testProd_5 Foo5 Bar5 Bar{5}
</code></pre>
<p>这是一个<a href="https://repl.it/@EnochKumala/GiganticPlasticDatamining" rel="nofollow noreferrer">repl</a>运行的地方</p>
<p><strong>编辑:保留重复项</strong></p>
<p>merge的默认功能是,它将在两个表中保留所有重复的键。这里处理重复项的问题是pandas不知道哪一行是预期的查找行,因此它只需为每个组合创建一对。如以下示例所示(系列1、2,然后合并):</p>
<pre><code> id q1 q2
0 testProd_1 Foo1 Bar1
1 testProd_2 Foo2 Bar2
2 testProd_3 Foo3 Bar3
3 testProd_5 Foo5 Bar5
4 testProd_6 Foo5 Bar6
q1 q2
0 Foo1 Bar1
1 Foo2 Bar2
2 Foo3 Bar3
3 Foo4 Bar4
4 Foo5 Bar{5}
5 Foo5 Bar{6}
id q1 q2_y
0 testProd_1 Foo1 Bar1
1 testProd_2 Foo2 Bar2
2 testProd_3 Foo3 Bar3
3 testProd_5 Foo5 Bar{5} <<< [3 testProd_5 Foo5 Bar5] + [4 Foo5 Bar{5}]
4 testProd_5 Foo5 Bar{6} <<< [3 testProd_5 Foo5 Bar5] + [5 Foo5 Bar{6}]
5 testProd_6 Foo5 Bar{5} <<< [4 testProd_6 Foo5 Bar6] + [4 Foo5 Bar{5}]
6 testProd_6 Foo5 Bar{6} <<< [4 testProd_6 Foo5 Bar6] + [5 Foo5 Bar{6}]
</code></pre>
<p>因此,没有简单的方法说“选择第二个表的第一行”,但您可以做的只是使用类似<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html" rel="nofollow noreferrer">^{<cd8>}</a>的函数预先删除第二个表中的重复项</p>