更快地在pandas数据帧中分配新值

时间:2014-10-30 17:54:21

标签: python pandas

我想知道是否有更快的方法为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”的值。

感谢您的任何想法!

1 个答案:

答案 0 :(得分:4)

您可以使用.ix

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

我相信loc也可能在这里工作而不是ix