有条件地修改数据帧中的值



我尝试修改数据帧中单元格的值,以它们的值为条件。 数据帧 dataTrad(50k, 20( 为 21 列,其中一列称为"重新索引"。 我想在任何"重新索引"单元格的原始值低于变量 (mlp( 时立即将其值降低到 0。

我试过:dataTrad[i, 'reindex'][dataTrad[i, 'reindex'] < mlp] = 0在 i 上循环,范围(len(dataTrad((, 以及dataTrad.loc[(dataTrad.reindex < malp),'reindex']=0,但这两种方法都不起作用。

在我的精确示例中,我的 mlp = 60 len(dataTrad( = 57830

我做错了什么,我该如何解决这个问题? 提前非常感谢。

我不是 100% 清楚"reindex"列是什么,它是每次"mpl"到达某个点时要"重置"的计数器,还是您想要使用的值,除非"mlp"达到某个点。

对于第二个,一个简单的应用程序/lambda组合应该可以满足您的需求,如下所示:

dataTrad['reindex'] = dataTrad.apply(lambda row: row['reindex'] if x > row['mlp'] else 0) 

否则,重置的累积滚动计数"稍微"复杂一些,但如果需要,这里可以很好地介绍。

我会尝试这样的事情

dataTrad['reindex'] = dataTrad['reindex'].apply(lambda x: 0 if (x<mlp) else x)

我相信应该有另一种方法,例如inplace参数,但现在尝试一下

让我知道它是否有效:)

最新更新