<h4>步骤:</h4>
<ol>
<li>使用<code>applymap</code>将每个值转换为一个列表</李>
<li><code>explode</code>数据帧</李>
<li>如果有的话,去掉多余的空间</李>
<li>基于<code>code3</code>列删除df中的重复项,并保留最后一个值</李>
<li>删除<code>code3</code>列并加入<code>code1 & code2</code></李>
<li>最后,使用<code>groupby</code>将它们聚合回来以获得所需的输出</李>
</ol>
<pre><code>df2 =(
df11.assign(
desired_output=df11.applymap(
lambda x: x.split(';'))
.apply(pd.Series.explode)
.applymap(str.strip)
.drop_duplicates(subset='code3', keep='last')
.drop('code3', 1)
.apply(' '.join, 1)
.groupby(level=0)
.agg('; '.join))
)
</code></pre>
<p>最新答复:</p>
<pre><code>df2 = (
df11.assign(
desired_output=
df11.apply(lambda s: s.str.split('; ').explode().str.strip())
.drop_duplicates(subset='code3', keep='last')
.drop('code3', 1)
.apply(' '.join, 1)
.groupby(level=0)
.agg('; '.join)
)
)
</code></pre>
<p>输出:</p>
<pre><code> code1 code2 \
0 A123; A321; B478; B678; C567 A; B5; N5; R4; H5
1 A321; A821; B448; B698; C577 A3; B; N; R7; H2
code3 desired_output
0 A445; A323; A323; A445; A659 B478 N5; B678 R4; C567 H5
1 A328; A328; A621; A442; A621 A821 B; B698 R7; C577 H2
</code></pre>