假设我有以下数据:
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/