Python 表中列的元素相乘
针对这个问题,我尝试了不同的解决方案,但都不起作用。 我有3列float类型,我想将它们的molti应用程序与另一列逐行进行比较。原始数据帧如下所示:Python 表中列的元素相乘,python,pandas,dataframe,Python,Pandas,Dataframe,针对这个问题,我尝试了不同的解决方案,但都不起作用。 我有3列float类型,我想将它们的molti应用程序与另一列逐行进行比较。原始数据帧如下所示: +------+------+------+--------+ | Col1 | Col2 | Col3 | Result | +------+------+------+--------+ | 4.5 | 2.0 | 2.0 | 18.0 | | 2.3 | 1.0 | 3.5 | 8.05 | | 2.5 | 5.2
+------+------+------+--------+
| Col1 | Col2 | Col3 | Result |
+------+------+------+--------+
| 4.5 | 2.0 | 2.0 | 18.0 |
| 2.3 | 1.0 | 3.5 | 8.05 |
| 2.5 | 5.2 | 3.0 | 5.0 |
+------+------+------+--------+
第三排显然是错的,第一排和第二排是对的。
所以我创建了一个名为Check的新列,它应该告诉我们,列结果是否是col1、col2和col3的乘积
df['Check'] = np.where((df.col1*df.col2*df.col3) != falseVol.VOLUM,'Result is wrong', 'Result is right')
因为我得到了错误的结果,所以我尝试了几种方法将列相乘,并创建了另一列来存储计算结果:
df['calculated'] = df['col1'] * df['col2'] * df['col3']
df['calculated'] = df['col1'].multiply(df['col2'] * df['col3'], axis=0)
每个都给我匹配的结果,但检查不起作用
如何逐行复制多个列并进行比较?
谢谢。使用
df.prod
/np.prod
将列相乘(有效地泛化到许多列),并使用np.isclose
与df.Result
执行元素浮动比较
np.isclose(df.iloc[:, :-1].prod(axis=1), df.Result)
或者
在哪里,
df.iloc[:, :-1].prod(axis=1)
0 18.00
1 8.05
2 39.00
dtype: float64
请注意,执行直接eq
比较会产生不正确的结果-
df.iloc[:, :-1].prod(axis=1).eq(df.Result)
0 True
1 False # incorrect
2 False
dtype: bool
这是。使用
df.prod
/np.prod
将列相乘(有效地推广到多个列),并使用np.isclose
与df.Result
执行元素浮动比较
np.isclose(df.iloc[:, :-1].prod(axis=1), df.Result)
或者
在哪里,
df.iloc[:, :-1].prod(axis=1)
0 18.00
1 8.05
2 39.00
dtype: float64
请注意,执行直接eq
比较会产生不正确的结果-
df.iloc[:, :-1].prod(axis=1).eq(df.Result)
0 True
1 False # incorrect
2 False
dtype: bool
这是由于。6.585600e+05是658560是的,对不起,我弄错了。结果是正确的,但与结果列的比较不正确。换了。谢谢。6.585600e+05是658560是的,对不起,我弄错了。结果是正确的,但与结果列的比较不正确。换了。非常感谢。