在pandas DataFrame中更快地赋值新值的方法

1 投票
1 回答
2374 浏览
提问于 2025-04-30 16:38

我在想,是否有更快的方法来根据另一个单元格的值给pandas数据框中的单元格赋新值。比如,看看这个数据框:

df = pd.DataFrame({'rank':[1, 1, 1, 1, 2, 2, 2, 2], 'condition':[.01, .01, .01, .01, .01, .01, .01, .01]})

下面的代码可以实现这个功能:

def changerank(row):
    if (row['condition'] == 0) & (row['rank'] > 1):
        row['rank'] = 1
    return row

df = df.apply(changerank, axis=1)

但是在我实际的数据框中,它有几百万行,所以运行起来比较慢。我觉得可能还有其他方法可以根据行的值来改变'rank'的值。

谢谢大家的建议!

暂无标签

1 个回答

4

你可以使用 .ix

df.ix[(df.condition==0) & (df.rank>1), 'rank'] = 1

我觉得这里也可以用 loc 来代替 ix

撰写回答