回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有一个包含用户的数据帧,每个用户都有多个ID:</p>
<pre><code>df_id = pd.DataFrame({'group': ['a','a','b','b','a','a','b','b','a','a','b','b'],
'id1': ['erd','hgf','ewr','fgv','nbg','axc','bcv','ijh','plh','wqe','mnf','iud'],
'id2': ['dfg','bcw','urz','fwq','nfg','dfo','hiy','fgl','vcw','erq','dfi','vcs']})
df_id
group id1 id2
0 a erd dfg
1 a hgf bcw
2 b ewr urz
3 b fgv fwq
4 a nbg nfg
5 a axc dfo
6 b bcv hiy
7 b ijh fgl
8 a plh vcw
9 a wqe erq
10 b mnf dfi
11 b iud vcs
</code></pre>
<p>2个包含部分用户ID的其他数据帧:</p>
^{pr2}$
<p>我想根据id将所有3个合并在一起,但是,<code>uidx</code>可以匹配<code>id1</code>或{<cd3>}中的<code>df_id</code>,所以我不能在一个列上联接。此外,<code>df_id</code>包含的用户比其他两个数据帧中的任何一个都要多,所以我预计<code>NaN</code></p>
<p>我能想到的唯一方法是遍历<code>df_id</code>并检查<code>id</code>列,并从其他数据帧手动添加值,但这非常慢。如果我要连接的值可能在<code>id</code>列中,那么正确的合并/联接方式是什么?在</p>
<p>所需输出为:</p>
<pre><code> group id1 id2 q_1 q_2
0 a erd dfg 1.0 NaN
1 a hgf bcw NaN NaN
2 b ewr urz 1.0 low
3 b fgv fwq NaN NaN
4 a nbg nfg 1.0 high
5 a axc dfo NaN low
6 b bcv hiy 0.0 NaN
7 b ijh fgl NaN high
8 a plh vcw NaN high
9 a wqe erq 0.0 NaN
10 b mnf dfi NaN NaN
11 b iud vcs NaN NaN
</code></pre>
<p>我的实际数据每个dataframe有数百个列,其中的列名变化很大,所以我寻找一种不需要单独/手动处理每个列的方法。换句话说,我正在寻找一种不需要手动指定列/数据帧名称的通用方法</p>