大熊猫中2个指标列的逻辑或

时间:2015-05-22 21:04:30

标签: python pandas

我有一个带有两个指标变量列的数据框。我想创建一个第三列,它是两个现有列的逻辑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类型。这让我感到惊讶,因为|是一个按位运算符,所以我希望该系列是int类型。因此,我必须执行apply(lambda ...)才能获得所需的int列。

我是正确地做了这个还是有更简洁/熊猫首选/ pythonic方式?

1 个答案:

答案 0 :(得分:1)

使用astype

df["c"] = (df["a"] | df["b"]).astype(int)

|实际上不是按位运算符。它将调用方法__or__。 这可以根据需要实施。

所以这个:

 df['a'] | df['b']

实际上称之为:

 df['a'].__or__(df['b'])