擅长:python、mysql、java
<p>根据您的示例,我将假设所有<code>new_ID</code>条目都是数字,除非没有匹配项</p>
<p>所以,如果您的数据帧看起来像这样(假设第2列有任何值,我不知道,所以我将0)</p>
<div class="s-table-container">
^{tb1}$
</div>
<p>接下来,我们可以通过使用<code>str.isnumeric()</code>查看<code>new_id</code>列是否包含一个数字来检查它是否有id</p>
<pre><code>has_id =df1.new_ID.str.isnumeric()
has_id>>>
0 True
1 True
2 True
3 False
4 True
Name: new_ID, dtype: bool
</code></pre>
<p>最后我们将使用<code>where()</code>
这是做什么的?它接受我们传递的<code>has_id</code>bollean过滤器的第一个参数<code>cond</code>,并检查它的<code>True</code>还是<code>False</code>。如果为true,则保持原始值;如果为false,则转到<code>other</code>中的参数,在本例中,我们将该参数指定给数据帧的第二列</p>
<pre><code>df1.where(has_id, df.iloc[:,1], axis=0)>>>
new_ID old_df_2
0 1 0
1 2 0
2 3 0
3 4 4
</code></pre>