如何根据整个数据框的条件而不是列替换单元格的数据框中的值。我曾尝试使用df.where但按照计划基于条件熊猫替换值
df = df.where(operator.and_(df > (-1 * .2), df < 0),0)
df = df.where(df > 0 , df * 1.2)
基本上什么林试图在这里做的是更换-.2和0之间的所有值为零所有列在我的数据帧,所有这不起作用值大于零,我想1.2
如何根据整个数据框的条件而不是列替换单元格的数据框中的值。我曾尝试使用df.where但按照计划基于条件熊猫替换值
df = df.where(operator.and_(df > (-1 * .2), df < 0),0)
df = df.where(df > 0 , df * 1.2)
基本上什么林试图在这里做的是更换-.2和0之间的所有值为零所有列在我的数据帧,所有这不起作用值大于零,我想1.2
你误解的方式pandas.where作品,这使原来的对象的值,如果条件为真繁殖,否则更换,你可以尝试扭转你的逻辑:
df = df.where((df <= (-1 * .2)) | (df >= 0), 0)
df = df.where(df <= 0 , df * 1.2)
其中允许你t o有一个单线解决方案,这非常棒。我更喜欢用这样的面具。
idx = (df < 0) & (df >= -0.2)
df[idx] = 0
我更喜欢把它分成两行,因为使用这种方法更容易阅读。你也可以强制这一行。
df[(df < 0) & (df >= -0.2)] = 0
只是另一种选择。
您应该拥有&运算符而不是|。正如所写的,所有内容都将更改为0.我尝试编辑,但不会允许我仅更改|至 &。 – tnknepp