指定熊猫广播操作的索引

时间:2019-04-30 17:22:28

标签: python pandas broadcasting

我有一个熊猫数据框,我想对其施加条件,并在另一个数据框上使用结果索引。举一个简单的例子:

a = pd.DataFrame(np.array([[1, 1, 2], [1, 2, 2], [2, 2, 1]]), columns=['a', 'b', 'c'])

   a  b  c
0  1  1  2
1  1  2  2
2  2  2  1

b = pd.Series([111, 222, 333], index=['a', 'b', 'c'])

a    111
b    222
c    333

在此示例中,我想创建第三个数组,其尺寸与'a'相同,值为1(或True),其中a == 2:

     a    b    c
0    0    0  333
1    0  222  333
2  111  222    0

我的问题是,如何执行这样的操作并指定轴?我怀疑解决方案是在某种程度上使用pd.where,尽管我不想保留任何原始值。

1 个答案:

答案 0 :(得分:2)

IIUC

a.eq(2).mul(b,axis=1)
Out[803]: 
     a    b    c
0    0    0  333
1    0  222  333
2  111  222    0

您提到pd.where

a.mask(a==1,0).mask(a==2,b,axis=1)
Out[834]: 
     a    b    c
0    0    0  333
1    0  222  333
2  111  222    0