我需要能够遍历行并执行一些操作。以下是一些代码的开始。iterrows性能差,错误信息
for i, row in df.iterrows():
df.loc[i, 'Object'] = row
性能是可笑的慢,我得到下面的输出:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
我在做什么错?
为什么不这样做呢? 'vector = [row for i,row in df.iterrows()]; df ['Object'] = vector'?在性能方面,你可能会看到一些改进,但是你也可以避免做那些警告表明你不应该做的事情。 – blacksite
这实际上不是一个错误,它是一个警告,它与你的性能问题无关。有关此警告的更多信息,请参阅此[问题](https://stackoverflow.com/questions/20625582/how-to-deal-with-settingwithcopywarning-in-pandas)。 –
很多时候你不需要遍历数据框的行,如果你可以矢量化你的函数/操作,你会看到很棒的性能改进。 –