2014-10-30 90 views
1

我想知道是否有更快的方式将新值分配给熊猫数据框中的单元格,条件是另一个单元格的值。例如,借此东风:在熊猫数据框中分配新值的更快方法

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) 

但它是我的包含数百万行的实际数据帧相当缓慢。我觉得可能有另一种方法来根据行的值来改变'等级'的值。

感谢您的任何想法!

回答

3

您可以使用.ix

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

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

+0

我没有足够的代表upvote你,但真棒。那正是我期待的!方式更快。 – 2014-10-30 18:38:17

相关问题