擅长:python、mysql、java
<p>我想出了一个不太“潘多拉”的解决办法。如果有人有想法的话,我还是很想看到一个更“pythonic”或“pandorable”的解决方案!我基本上创建了一个与<code>DataFrame</code>长度相同的新列表,遍历每一行,然后用新列表覆盖该列。你知道吗</p>
<pre><code>state = [FindState(test['Zip_To_Use'].iloc[i]) if (test['StateName'].iloc[i] == "" and test['Zip_To_Use'].iloc[i] != "")
else test['StateName'].iloc[i] for i in range(len(test))]
</code></pre>
<p>在常规for循环中重述(为了可读性):</p>
<pre><code>state = []
for i in range(len(test)):
if (test['StateName'].iloc[i] == "" and test['Zip_To_Use'].iloc[i] != ""):
state.append(FindState(test['Zip_To-Use'].iloc[i]))
else:
state.append(test['StateName'].iloc[i])
</code></pre>
<p>然后用这个新列表重新分配列</p>
<pre><code>test['StateName'] = state
</code></pre>
<p>如果你有更好的解决办法,请告诉我!你知道吗</p>