当我尝试创建df行的子集时,我使用以下代码
lst_of_brands =['brand_1','brand_2','Brand_3']
df_selected_brands = df_all_products.loc[df_all_products['brands'].isin(lst_of_brands)]
当我在新df中的列上迭代时,它在键nr10处停止
for item in range(len(df_selected_brands)):
product_id = df_selected_brands['id'][item]
print (product_id)
此代码在键编号10处停止并给出错误
KeyError:10
在原始df中迭代相同的列是没有问题的。
我想我做子集的方式有问题,但不知道是什么。
2条答案
按热度按时间s71maibg1#
在循环之前重置df_selected_brands的索引:
当子集化一个 Dataframe 时,索引保留其原始值。因此当你使用索引迭代一个 Dataframe 或序列时,它们不能按预期对齐,并引发一个键错误。
64jmpszr2#
如果您确实想按位置迭代每行,请使用
.iloc
:但你也可以使用
itertuples