python - 根据另一个数据帧中的 boolean 值设置一个数据帧中的值

标签 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 中的 boolean 值?

例如,如果我想做 NAN数据框中的值 A其中有一个 False 的实例在数据框中B

最佳答案

如果需要将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

关于python - 根据另一个数据帧中的 boolean 值设置一个数据帧中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39853718/

相关文章:

python - 如何要求登录 Django 通用 View ?

python - Tkinter 按钮的突出显示对我不起作用

mysql - SQL 查询 : Speed up for huge tables

python - 如何从txt文件中获取列表(Python)

python - 属性错误: 'DataFrame' object has no attribute 'datetime'

python - 将字符串设置为 pandas DataFrame 的索引

python - 基于 pandas 条件的列值总和

python - numpy 2d 数组(坐标)需要分配到 3D 数组中,分配给某个特定的 bin

algorithm - 索引结构(分层帕特里夏特里)

连接时出现 Python SocketServer 错误