<p>IIUC,<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">^{<cd1>}</a>+<code>as_index=False</code>与<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.first.html" rel="nofollow noreferrer">^{<cd3>}</a>一起消除<code>NaN</code></p>
<pre><code>#df = df.replace('NAN',np.nan) #If necessary
df.groupby(['Id','Name'],as_index=False).first()
</code></pre>
<p>如果您认为它可能有一个具有非空值的pairid名称在某些列中,您可以使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.GroupBy.apply.html" rel="nofollow noreferrer">^{<cd5>}</a>和<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ffill.html" rel="nofollow noreferrer">^{<cd6>}</a>和<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.bfill.html" rel="nofollow noreferrer">^{<cd7>}</a>+<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.drop_duplicates.html" rel="nofollow noreferrer">^{<cd8>}</a>来保存所有信息</p>
<pre><code>df.groupby(['Id','Name']).apply(lambda x: x.ffill().bfill()).drop_duplicates()
</code></pre>
<p><strong>输出</strong></p>
<pre><code> Id Name Marks1 Marks2 Marks3 Marks4 Marks5
0 1 ABC 10 18 16 17 NaN
1 2 BCD 15 10 NaN 15 NaN
2 3 CDE 17 NaN 19 NaN NaN
</code></pre>