itterrows性能不佳,错误信息

时间:2017-05-25 12:48:59

标签: 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

我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果遍历整个数据框并尝试在每一行上使用loc,那么它将变慢。相反,试试这个:

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

答案 1 :(得分:0)

如果你真的发现需要循环,请使用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]