<p>您可以像这样使用熊猫:</p>
<pre><code>pd.DataFrame(series_1)[['id','q1']].merge(pd.DataFrame(series_2), on=['q1']).to_dict('records')
</code></pre>
<p>输出:</p>
<pre><code>[{'id': 'testProd_1', 'q1': 'Foo1', 'q2': 'Bar1'},
{'id': 'testProd_2', 'q1': 'Foo2', 'q2': 'Bar2'},
{'id': 'testProd_3', 'q1': 'Foo3', 'q2': 'Bar3'},
{'id': 'testProd_5', 'q1': 'Foo5', 'q2': 'Bar{5}'}]
</code></pre>
<h3>使用有问题的新数据更新</h3>
<p>熊猫将为1对多连接或多对多连接创建笛卡尔生产。因此,您将看到这些组合</p>
<pre><code>df1.merge(df2, on=['q1'])
</code></pre>
<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}
4 testProd_5 Foo5 Bar5 Bar{6}
5 testProd_6 Foo5 Bar6 Bar{5}
6 testProd_6 Foo5 Bar6 Bar{6}
</code></pre>
<hr/>
<h3>无重复项</h3>
<p>在没有重复项的情况下,您可以创建一个cumcount,以便在df2中将行1连接到行1,如下所示:</p>
<pre><code>df1m = df1.assign(mergekey=df1.groupby('q1').cumcount())
df2m = df2.assign(mergekey=df2.groupby('q1').cumcount())
df1m.merge(df2m, on=['q1','mergekey'])
</code></pre>
<p>输出:</p>
<pre><code> id q1 q2_x mergekey q2_y
0 testProd_1 Foo1 Bar1 0 Bar1
1 testProd_2 Foo2 Bar2 0 Bar2
2 testProd_3 Foo3 Bar3 0 Bar3
3 testProd_5 Foo5 Bar5 0 Bar{5}
4 testProd_6 Foo5 Bar6 1 Bar{6}
</code></pre>