我有一个带有两个指标变量列的数据框。我想创建第三个列,这是OR
两个现有列的逻辑。我能够像这样:
df = DataFrame ({"a" : [1,0,0] , "b" : [0,0,1] })
df["c"] = (df["a"] | df["b"]).apply(lambda x : 1 if x else 0)
所生产的系列(df["a"] | df["b"])
是类型bool
。这让我感到惊讶,因为|
它是按位运算符,所以我期望系列是type int
。因此,我必须这样做apply(lambda ...)
才能获得所需的int
列。
我是在正确执行此操作,还是有更简洁/熊猫优选/ pythonic的方式?
用途astype
:
df["c"] = (df["a"] | df["b"]).astype(int)
的|
是不是真正的位运算符。它将调用方法__or__
。这可以根据需要实现。
所以这:
df['a'] | df['b']
实际上称为:
df['a'].__or__(df['b'])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句