在pandas DataFrame中更快地赋值新值的方法
我在想,是否有更快的方法来根据另一个单元格的值给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
。