回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我使用itertuples()迭代器函数迭代pandas表。当条件为真时,我想在另一列中设置一个值。这很简单。但是我想在之前设置的值的基础上再设置另一个值到另一列,这不起作用。我不得不再安排一次这样做,但这是低效的。
如何在一个迭代过程中在不同的列中设置多个值。在</p>
<p>下面是一些示例代码:</p>
<pre><code>data = {
'Animal': ['cat', 'dog', 'dog', 'cat', 'bird', 'dog', 'cow'],
'Noise': ['muh', 'miau', 'wuff', 'piep', 'piep', 'miau', 'muh']
}
df = pd.DataFrame(data)
df.insert(loc=2, column='Match', value='')
df.insert(loc=3, column='Comment', value='')
for row in df.itertuples():
if row.Animal == 'cat' and row.Noise == 'miau':
df.set_value(index=row.Index, col='Match', value=True)
elif row.Animal == 'dog' and row.Noise == 'wuff':
df.set_value(index=row.Index, col='Match', value=True)
elif row.Animal == 'bird' and row.Noise == 'piep':
df.set_value(index=row.Index, col='Match', value=True)
elif row.Animal == 'cow' and row.Noise == 'muh':
df.set_value(index=row.Index, col='Match', value=True)
# Why is this not getting applied to the 'Comment' column?
if row.Match is True:
df.set_value(index=row.Index, col='Comment', value='yeah')
</code></pre>
<p>我必须进行另一次迭代来填充注释列:</p>
^{pr2}$
<p>但是对于500000+的值,这是非常低效和耗时的。
那么,有什么更好的方法来做这样的事情呢?在</p>