<p>似乎需要<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.mask.html" rel="nofollow noreferrer">^{<cd1>}</a>+<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.astype.html" rel="nofollow noreferrer">^{<cd2>}</a>通过<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.duplicated.html" rel="nofollow noreferrer">^{<cd3>}</a>创建的布尔掩码:</p>
<p><em>注意:我将cast添加到<code>str</code>,因为else会在<code>count</code>列(带int的字符串)中获得混合值,一些pandas函数可能会被破坏</em></p>
<p><em>注意1-如果对<code>Name</code>列中的值进行排序,则解决方案有效</em></p>
<pre><code>cols = ['Name','count']
df[cols] = df[cols].astype(str).mask(df.duplicated(['Name']), '')
print (df)
Name ID Sample count
0 CTA15 22 PE12 2
1 22 PL14
2 AC007 2 AE29 3
3 2 AE04
4 2 PE03
</code></pre>
<p>如果需要<code>NaNs</code>,只需省略<code>,</code>,但最后一列值将转换为<code>float</code>(因为<code>NaN</code>是float)</p>
<pre><code>cols = ['Name','count']
df[cols] = df[cols].mask(df.duplicated(['Name']))
print (df)
Name ID Sample count
0 CTA15 22 PE12 2.0
1 NaN 22 PL14 NaN
2 AC007 2 AE29 3.0
3 NaN 2 AE04 NaN
4 NaN 2 PE03 NaN
</code></pre>
<p>因为<code>lists</code>可以使用:</p>
<pre><code>cols = ['Name','count', 'ID']
df = df.groupby(cols)['Sample'].apply(list).reset_index()
print (df)
Name count ID Sample
0 AC007 3 2 [AE29, AE04, PE03]
1 CTA15 2 22 [PE12, PL14]
</code></pre>