<p><strong>回答第一个问题:“为什么我不能这么做?”</strong></p>
<p>{a1}国(在说明中):</p>
<blockquote>
<p>Because iterrows returns a Series for each row, ....</p>
</blockquote>
<p>及</p>
<blockquote>
<p>You should never modify something you are iterating over. [...] the iterator returns a copy and not a view, and writing to it will have no effect.</p>
</blockquote>
<p>这基本上意味着它返回一个包含该行值的新序列</p>
<p>因此,您得到的不是实际的行,也肯定不是数据帧</p>
<p>但你所做的是工作,尽管不是以你想要的方式:</p>
<pre><code>df = DF(dict(a= [1,2,3], b= list("abc")))
df # To demonstrate what you are doing
a b
0 1 a
1 2 b
2 3 c
for index, row in df.iterrows():
... print("\n \n>>> Next Row:\n")
... print(row)
... row["c"] = "ADDED" ####### HERE I am adding to 'the row'
... print("\n >> added:")
... print(row)
... print(" ")
...
Next Row: # as you can see, this Series has the same values
a 1 # as the row that it represents
b a
Name: 0, dtype: object
>> added:
a 1
b a
c ADDED # and adding to it works... but you aren't doing anything
Name: 0, dtype: object # with it, unless you append it to a list
Next Row:
a 2
b b
Name: 1, dtype: object
### same here
>> added:
a 2
b b
c ADDED
Name: 1, dtype: object
Next Row:
a 3
b c
Name: 2, dtype: object
### and here
>> added:
a 3
b c
c ADDED
Name: 2, dtype: object
</code></pre>
<p><strong>回答第二个问题:“这是好办法吗?”</strong></p>
<p>没有</p>
<p>因为使用SeaBean所展示的乘法实际上使用了
numpy和pandas是矢量化操作。
<a href="https://www.pythonlikeyoumeanit.com/Module3_IntroducingNumpy/VectorizedOperations.html" rel="nofollow noreferrer">This is a link to a good article on vectorization in numpy arrays</a>,它们基本上是pandas数据帧和系列的构建块</p>