代码之家  ›  专栏  ›  技术社区  ›  KOB

df.其中,基于其他两个数据帧的差异

  •  1
  • KOB  · 技术社区  · 6 年前

    我有三个相同形状的数据帧(1000,10000)。

    • original 每行有约20-100个非零值-非常稀疏
    • input 是一份拷贝 起初的 ,每行10个随机非零值更改为零
    • output 完全用非零值填充

    我现在正试图比较 起初的 输出 仅在以下位置 输入 输出 是不同的(即在10个随机选择的位置)

    首先,我只创建这些元素的df 起初的 其他一切设置为零:

    maskedOriginal = original.where(original != input, other=0)
    

    这是在几秒钟内创建的。然后我也试着这么做 输出 :

    maskedOutput = output.where(original != input, other=0)
    

    但是,由于现在使用的是3个数据帧,速度太慢了-几分钟后我甚至没有得到结果。有没有更合适的方法来做这个?

    1 回复  |  直到 6 年前
        1
  •  0
  •   jezrael    6 年前

    使用 numpy.where 具有 DataFrame 施工人员:

    arr = original.values
    maskedOriginal = pd.DataFrame(np.where(arr != input, arr, 0), 
                                  index=original.index,
                                  columns=original.columns)