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

基于第二个数据帧设置数据帧的值

  •  2
  • dr_rk  · 技术社区  · 6 年前

    我想在另一个数据框中屏蔽基于布尔值的pandas数据框。

    所以,我创建了一个pandas数据框 1 0 :

    boolean_data = [(1, 0), (0, 1), (0, 0)]
    df_criteria = DataFrame(data=boolean_data, index=['A','B','C'], columns=['x','y'])
    
        x    y
    A   1    0
    B   0    1
    C   0    0
    

    我想用上面的 df_criteria 屏蔽第二个数据帧的值 df_result ,即,在哪里 df_criteria(i,j)=1 , df_result(i,j)=0 .

    df_result = DataFrame(
        data=[(10, 20), (30, 20), (10, 10)],
        index=['A','B','C'], columns=['x','y'])
    

    DFX结果 (掩蔽前)

       x    y
    A  10   20
    B  30   20
    C  10   10
    

    DFX结果 (掩蔽后)

       x    y
    A  0   20
    B  30   0
    C  10  10
    
    2 回复  |  直到 6 年前
        1
  •  3
  •   Martijn Pieters    6 年前

    IIUC,使用 mask

    df_result.mask(df_criteria==1,0)
    Out[55]: 
        x   y
    A   0  20
    B  30   0
    C  10  10
    
        2
  •  1
  •   jpp    6 年前

    使用 pd.DataFrame.iloc numpy.where :

    df.iloc[:] = np.where(df_criteria, 0, df)
    
    print(df)
    
        x   y
    A   0  20
    B  30   0
    C  10  10