【发布时间】:2020-07-26 00:20:53
【问题描述】:
我有两个数据框。
- df1,形状为 (1, 3),
- df2,形状为 (10, 3)。
df1 看起来像这样:
col0 col1 col2
0 0.3 0.14 0.34
df2 看起来像这样:
col0 col1 col2
0 5 10 15
1 36 30 39
2 42 21 44
3 49 37 34
4 19 14 50
5 28 27 48
6 19 28 45
7 4 7 8
8 31 4 33
9 3 23 43
我想使用列轴将 df2 乘以 df1;即 df2 的 col1 到 df1 的 col1; df2 的 col2 到 df1 的 col2;和 df2 的 col3 到 df1 的 col3。
我寻求的结果:
col0 col1 col2
0 1.5 1.4 5.1
1 10.8 4.2 13.26
2 12.6 2.94 14.96
3 14.7 5.18 11.56
4 5.7 1.96 17
5 8.4 3.78 16.32
6 5.7 3.92 15.3
7 1.2 0.98 2.72
8 9.3 0.56 11.22
9 0.9 3.22 14.62
这是我失败的尝试:
columns = df1.columns
product = df2.multiply(df1[columns], axis=columns)
它会引发“长度不匹配错误”错误。
可以做些什么来让它发挥作用?我搜索了论坛,但找不到符合我确切要求的答案。
【问题讨论】:
-
如果您给我们几个示例数据框 -
df1 = pd.DataFrame(...,那就太好了 - 这样我们就可以从您的问题中复制而不是让我们为您完成工作。请阅读minimal reproducible example。 -
尺寸无法复制和粘贴。不挤屏幕。也许我可以创建一个更小的按比例缩小的框架?
-
是的,一个最小的 toy/fake 示例对于您的 mre 来说是可以接受的,只要他们忠实地代表/重现问题。 - 在这种情况下,形状 (1,5) 和 (3,5) 就足够了。 ...像
df1 = pd.DataFrame(np.ones((1,5))*2);df2 = pd.DataFrame(np.arange(21*19).reshape(3,5))这样的东西总是很有帮助的。 -
好的,我已经编辑过了。
-
试试:
df2.mul(df1.to_numpy())