我想知道是否有更快的方法为pandas数据帧中的单元格分配新值,条件是另一个单元格的值。例如,拿这个df:
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”的值。
感谢您的任何想法!
答案 0 :(得分:4)
您可以使用.ix
:
df.ix[(df.condition==0) & (df.rank>1), 'rank'] = 1
我相信loc
也可能在这里工作而不是ix
。