擅长:python、mysql、java
<p>正确的方法是<a href="https://stackoverflow.com/a/62931402/3545273">@UmerRana's answer</a>,因为在数据帧上迭代具有糟糕的性能。如果您真的必须这样做,可以寻址单个单元格,但不要假装我建议您这样做:</p>
<pre><code>df = pd.DataFrame(dict(Name=['abc','def','ghi'],NoMatter=['X','X','X']))
df1 = pd.DataFrame(dict(Name=['abc','def','ghi'],Value=[1,2,3]))
df['Value'] = 0 # initialize a new column of integers (hence the 0)
ix = df.columns.get_loc('Value')
for i in range(len(df)): # perf is terrible!
df.iloc[i, ix] = df1['Value'][i]
</code></pre>
<hr/>
<p>在看到示例代码之后,如果无法避免循环,我认为这是一种不太糟糕的方法:</p>
<pre><code>newcol = np.zeros(something, dtype='int') # set the correct type
for i in range(something):
#compute a value
newcol[i] = value_for_i_iteration
df['Value'] = newcol # assign the array to the new column
</code></pre>