擅长:python、mysql、java
<p>我想我理解您的问题,在这些情况下,我通常会发现制作一个列表并将其附加到现有的数据帧更容易。当然,您可以先创建一个序列实例<em>,然后</em>进行计算。</p>
<pre><code>new_series = [0]*len(df["A"])
new_series[0] = 1000
for i,k in enumerate(dataframe["A"].ix[1:]):
new_series[i] = (1 + k)*new_series[i-1]
dataframe["B"] = pd.Series(new_series)
</code></pre>
<p>IIRC,<em>iloc</em>在熊猫的未来构建中被弃用,取而代之的是<em><a href="http://pandas.pydata.org/pandas-docs/version/0.17.0/generated/pandas.DataFrame.ix.html" rel="nofollow">ix</a></em></p>
<p>重新考虑问题后,可以在数据帧中使用lambda表达式作为元素</p>
<pre><code>dataframe["B"] = [lambda row: (1 + dataframe["A"].ix[row])*dataframe["B"].ix[row-1]*len(dataframe["A"])
# Above: initiate "B" with a lambda expression that is as long as "A"
dataframe["B"].ix[0] = 1000
for i,k in enumerate(dataframe["B"].ix[1]):
dataframe["B"].ix[i] = k(row=i)
</code></pre>
<p>我正试图想办法使用for循环来解决这个问题,但无法找到从何处获取行号的方法。</p>
<p>希望这有帮助。</p>