我尝试修改数据帧中单元格的值,以它们的值为条件。 数据帧 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
参数,但现在尝试一下
让我知道它是否有效:)