这个表达
df["column"].diff() != 0
给我熊猫系列的布尔值。我现在想的列df["result"]
那里的价值100
在每一个真正的价值df["column"]
,并0
为每个虚假。
我不明白为什么这行不通:
df["result"] = 100 if df["column"].diff() != 0 else 0
我知道我必须使用loc,但是从这里开始:
df.loc[df["column"].diff() != 0]
然后如何设置结果列?
这是numpy.where
按条件设置2值的最佳用途,解决方案是矢量化的:
df["result"] = np.where(df["column"].diff() != 0, 100, 0)
您的代码:
df["result"] = 100 if df["column"].diff() != 0 else 0
不起作用,因为这里使用的是一维数组(系列),所以不能使用标量解。
您还会得到:
ValueError:系列的真值不明确。使用a.empty,a.bool(),a.item(),a.any()或a.all()。
这意味着没有明确的含义,从的布尔数组的标量输出是什么df["column"].diff() != 0
。
有关更多信息,请参见对熊猫使用if / truth语句
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句