Python iTerrows性能差,错误消息

Python iTerrows性能差,错误消息,python,pandas,Python,Pandas,我需要能够迭代行并执行一些操作。下面是一些代码的开始 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 我做错了什么?如果遍历整个数据帧并尝试在每一行上

我需要能够迭代行并执行一些操作。下面是一些代码的开始

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

我做错了什么?

如果遍历整个数据帧并尝试在每一行上使用loc,那么速度会很慢。相反,请尝试以下方法:

df.ix[np.in1d(df['Object'], value)

如果您确实发现需要循环,请使用itertuples,在大多数情况下,它的速度要快很多倍

df = pd.DataFrame({"Object": [1,2,3], "Lifeishard_butunfair": [2,3,4]})

objectCol = df.columns.get_loc("Object")+1
for row in df.itertuples():
    someVar = row[objectCol]

为什么不这样做呢<代码>向量=[i的行,df.iterrows()中的行];df['Object']=向量?就性能而言,您可能会看到一些改进,但您也会避免执行该警告建议您不应该执行的操作。这实际上不是错误,而是警告,与您的性能问题无关。有关此警告的更多信息,请参见此。很多时候,您不需要遍历数据帧的行,如果您可以矢量化您的函数/操作,您将看到性能的巨大改进。ix已被弃用。您是否找到任何说明何时使用iterrows vs itertuples的文档?我看到一些帖子说itertuples更快,但我发现的大多数教程都是基于iterrows的。谢谢你的建议!更多信息请点击此处: