两个熊猫数据帧的条件逐元素乘法

CTXR

我正在努力在两个数据帧之间进行基本的条件逐元素乘法。假设我有以下两个数据框:

df1 = pd.DataFrame({'A': [-0.1,0.3,-0.4, 0.8,-0.5,-0.1,0.3,-0.4, 0.8,-1.2],'B': [-0.2,0.5,0.3,-0.5,0.1,-0.2,0.5,0.3,-0.5,0.9]},index=[0, 1, 2, 3,4,5,6,7,8,9])
df2=pd.DataFrame({'C': [-0.003,0.03848,-0.04404, 0.018,-0.1515,-0.02181,0.233,-0.0044, 0.01458,-0.015],'D': [-0.0152,0.0155,0.03,-0.0155,0.0151,-0.012,0.035,0.0013,-0.0005,0.009]},index=[0, 1, 2, 3,4,5,6,7,8,9])

这个想法是df1 and df2.shift(-1)根据df1的值相乘(元素上,而不是矩阵相乘)。如果是(df1>=0.50 or df1<=-0.50)这样,我将df1和df2.shift(-1)相乘。否则,我只输入0。

在此示例中,期望的结果应为以下内容(列名称是df1以及df1索引的列名称):

df3=pd.DataFrame({'A': [0,0,0, -0.1212,0.010905,0,0,0, -0.012,'NaN'],'B': [0,0.015,0,-0.00755,0,0,0.00065,0,-0.0045,'NaN']},index=[0, 1, 2, 3,4,5,6,7,8,9])

我尝试了以下代码:

import numpy as np
import pandas as pd
df3=np.where((df1>=0.50 or df1 <=-0.50),df1*df2.shift(-1),0)

我得到了DataFrame的真值是模棱两可的。使用a.empty,a.bool(),a.item(),a.any()或a.all()。谢谢。

耶斯列尔

使用|按位ORDataFrame构造函数:

arr = np.where((df1>=0.50) | (df1 <=-0.50),df1*df2.shift(-1),0)
df3 = pd.DataFrame(arr, index=df1.index, columns=df1.columns)
print (df3)
          A        B
0  0.000000  0.00000
1  0.000000  0.01500
2  0.000000  0.00000
3 -0.121200 -0.00755
4  0.010905  0.00000
5  0.000000  0.00000
6  0.000000  0.00065
7  0.000000  0.00000
8 -0.012000 -0.00450
9       NaN      NaN

Numpy解决方案应该更快:

arr2 = np.concatenate([df2.values[1:, ], 
                       np.repeat(np.nan, len(df2.columns))[None, :]])

arr = np.where((df1.values>=0.50) | (df1.values <=-0.50),df1.values*arr2,0)
df3 = pd.DataFrame(arr, index=df1.index, columns=df1.columns)
print (df3)
          A        B
0  0.000000  0.00000
1  0.000000  0.01500
2  0.000000  0.00000
3 -0.121200 -0.00755
4  0.010905  0.00000
5  0.000000  0.00000
6  0.000000  0.00065
7  0.000000  0.00000
8 -0.012000 -0.00450
9       NaN      NaN

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

两个熊猫数据框的逐元素比较

熊猫中的两个条件乘法

如何通过逐列相乘来组合两个不同的多索引熊猫数据帧

将两个大小不同的熊猫数据帧逐元素相乘,并添加一个维度作为附加索引/列

带有两个不同时间索引的熊猫数据帧操作(除法乘法)

熊猫:两个数据帧的按行乘法

MATLAB - 使用两个不同大小矩阵的逐元素矩阵乘法

如何执行具有不同维度的两个向量的逐元素乘法

如何在元素不按顺序排列的两个不同列上合并两个熊猫数据帧?

逐个元素地汇总两个具有不同索引的熊猫数据帧

为两个熊猫数据帧设置等效的dtypes

在时间戳上加入两个熊猫数据帧

使用浮点索引合并两个熊猫数据帧

逐行比较两个熊猫数据帧

两个熊猫数据帧之间的快速Spearman相关

两个熊猫数据帧的相关矩阵

在熊猫的平均两个相同格式的数据帧

熊猫-合并两个未堆叠的数据帧

如何从两个不同的熊猫数据帧计算比率

找出熊猫中两个不同数据帧的交集

如何关联两个熊猫数据帧的标量值

比较两个熊猫数据帧的行的最快方法?

比较两个熊猫数据帧的行?

两个熊猫数据帧之间的平均向量

熊猫在两个系列之间进行逐元素比较的最佳方法

如何将一个数据帧中的两列逐元素组合?

在python中合并两个熊猫数据帧,并包含一个公共列和字符串条件

通过R中的两个条件过滤数据帧

数据帧r和grepl中的两个条件