首页 > 解决方案 > 熊猫每行的条件替换

问题描述

我可能正在做一些非常简单的事情,但我无法弄清楚那里的诀窍。

我有一个数据框,我想用某个随机值替换特定列中超过从零开始的值的值。我曾认为这是实现这一目标的一种方式:

self.dfile['foo'] = np.where(self.dfile['foo'] >= 0, random.uniform(4, 9), self.dfile['foo'])

它似乎在所有超过 0 的值中给出相同的随机值。如何获得不同的值?

标签: pythonpandasnumpyseries

解决方案


random.uniform(4, 9)返回一个整数,np.where然后在所有行中广播。相反,使用np.random,它给出了一个指定长度的数组:

self.dfile['foo'] = np.where(self.dfile['foo'] >= 0,
                             np.random.uniform(4, 9, len(self.dfile.index)),
                             self.dfile['foo'])

推荐阅读