python - 如何使用向量 "or"DataFrame 中的每一列?

标签 python pandas dataframe logical-operators

假设我有以下数据:

try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO
import pandas as pd
from numpy import uint8

vector = pd.Series([1, 0, 0, 1])

df = pd.read_table(StringIO("""a    b    c
1   0   0
1   1   1
0   1   1
1   1   0"""), sep="\s+", dtype=uint8, header=0)

如何将向量与 df 中的每一列进行“或”运算?

我知道我可以用“or”和我的向量创建一个部分函数并将其应用于 df,但这可能不符合习惯并且不必要地耗时。 Pandas 的方式是什么?

想想看,惯用的方式可能是 lambda...是否没有二元运算符,例如 dataframe.div(series)? (Binary DF operations)

我想要dataframe.or(vector)...

最佳答案

您可以将 DataFrame 和(列)向量直接传递到 np.logical_or :

>>> np.logical_or(df, vector[:, None])
       a     b     c
0   True  True  True
1   True  True  True
2  False  True  True
3   True  True  True

请注意,这会返回一个 bool 值的 DataFrame;如果您愿意,可以转换回数字数据类型。

关于python - 如何使用向量 "or"DataFrame 中的每一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31863431/

相关文章:

Python解析数据框元素

python - 从分组列中另一个 DataFrame 的每一行创建 DataFrame?

pandas - 使用基于其他列 pandas 中的值的拆分和索引来处理一列中的数据

python - 如何在 Django 中创建用户定义字段

python - 使用 pip 安装 Beautiful Soup

python - 基于默认值列替换多列中的 NaN 的最有效方法是什么?

python - 将数据框一分为二并使用代字号 ~ 作为变量

python - 如何逐字读取文件

Python tkinter : access child widgets of a widget

python - 如何重新创建 pandas DataFrame、线条和条形图