在另一个数据框中设置布尔值中的值

时间:2016-10-04 13:32:02

标签: python pandas indexing dataframe boolean

我有一个可以使用以下代码复制的MWE:

import pandas as pd
a = pd.DataFrame([[1,2],[3,4]], columns=['A', 'B'])
b = pd.DataFrame([[True,False],[False,True]], columns=['A', 'B'])

创建以下数据帧:

In [8]: a
Out[8]: 
   A  B
0  1  2
1  3  4

In [9]: b
Out[9]: 
       A      B
0   True  False
1  False   True

我的问题是,如何根据数据框A中的布尔值更改数据框B的值?

例如,如果我想在数据框NAN中生成A值,并且数据框False中有B的实例?

1 个答案:

答案 0 :(得分:1)

如果需要将False替换为NaN

print (a[b])
     A    B
0  1.0  NaN
1  NaN  4.0

或:

print (a.where(b))
     A    B
0  1.0  NaN
1  NaN  4.0

如果需要将True替换为NaN

print (a[~b])
     A    B
0  NaN  2.0
1  3.0  NaN

或:

print (a.mask(b))
     A    B
0  NaN  2.0
1  3.0  NaN

此外,您可以使用wheremask使用某些标量值:

print (a.where(b, 7))
   A  B
0  1  7
1  7  4

print (a.mask(b, 7))
   A  B
0  7  2
1  3  7

print (a.where(b, 'TEST'))
      A     B
0     1  TEST
1  TEST     4