首页 > 解决方案 > iloc 在循环中替换错误值

问题描述

我正在尝试检查我的数据集并根据某些条件更改 rating_denominator 的值。但是这种方法给了我一个“IndexError:单个位置索引器超出范围”的错误消息。

如果你们中的任何人有任何线索,那就太棒了。

谢谢

for i, row in twitter_copy[twitter_copy.rating_denominator != 10].iterrows():
    d = row.rating_denominator
    k = row.rating_numerator
    if d == 0:
       # twitter_copy.rating_denominator.replace(d,10, inplace=True)
        twitter_copy.iloc[i]['rating_denominator'] = 10
    elif d < 10 and k > 10:
        #twitter_copy.rating_denominator.replace(d,10, inplace=True)
        twitter_copy.iloc[i]['rating_denominator'] = 10
    else:
       twitter_copy.iloc[i]['rating_denominator'] = 10

标签: pythonpandasdataframeloops

解决方案


也许使用 df.loc 而不是 iloc 可能会对您有所帮助?

for i in df[df['columnA'!=10]]:
    df.loc[df['columnA'] <10 & df['columnB']>10, 'columnA'] = 10
    df.loc[df['columnA'] == 0, 'columnA'] = 10

它可能会奏效,让我知道!


推荐阅读