我有两个数据帧

A=A=A=

0 1 2
0 0.5 0
0.1 0 0.2
0.2 0 0

和b =

0
1.0
1.0
NaN

我需要将A的每一行乘以B元素,但我需要完成计算,以便只有当A的原始元素为0时,得到的Ramrame才显示NaN.

如果我做

A * B.transpose()

我得到

0 1 2
0 0.5 NaN
0.1 0 NaN
0.2 0 NaN

但我需要它

0 1 2
0 0.5 NaN
0.1 0 0.2
0.2 0 NaN
import pandas as pd

A=A=A= pd.DataFrame([[0, 0.5, 0], 
                  [0.1, 0, 0.2], 
                  [0.2, 0, 0]])

B = pd.DataFrame([1, 1, np.NaN])

推荐答案

IIUC您可以try :

out = A * B.T.values
out[out.isna() & ~A.eq(0)] = A

print(out)

打印:

     0    1    2
0  0.0  0.5  NaN
1  0.1  0.0  0.2
2  0.2  0.0  NaN

Python相关问答推荐

计算相同形状的两个张量的SSE损失

使用Keras的线性回归参数估计

使用SciPy进行曲线匹配未能给出正确的匹配

韦尔福德方差与Numpy方差不同

试图找到Python方法来部分填充numpy数组

为什么以这种方式调用pd.ExcelWriter会创建无效的文件格式或扩展名?

Streamlit应用程序中的Plotly条形图中未正确显示Y轴刻度

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

将pandas导出到CSV数据,但在此之前,将日期按最小到最大排序

基于形状而非距离的两个numpy数组相似性

手动设置seborn/matplotlib散点图连续变量图例中显示的值

Flask Jinja2如果语句总是计算为false&

如何使用正则表达式修改toml文件中指定字段中的参数值

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

504未连接IB API TWS错误—即使API连接显示已接受''

python3中np. divide(x,y)和x/y有什么区别?'

Pythonquests.get(Url)返回Colab中的空内容

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

高效地计算数字数组中三行上三个点之间的Angular

Groupby并在组内比较单独行上的两个时间戳