将不同维度的数据帧相乘:列数相同,但行数不同

2024-09-27 19:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个数据帧

  • 形状为(1,3)的df1
  • 形状为(10,3)的df2

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;i、 e 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)

它抛出“长度不匹配错误”错误

我们能做些什么使它起作用?我搜索了论坛,但找不到符合我确切要求的答案


Tags: columns数据错误product论坛multiplycol2col3
2条回答

转换为nDarray和乘法-它们应该正确广播

vals1 = df1.to_numpy()
vals2 = df2.to_numpy()

result = vals1 * vals2

df2 * df1.to_numpy()

解决这一挑战还有很长的路要走:

columns = df1.columns
index = df2.index
length = len(df2)
df1_array = df1.to_numpy()
df1_tiled = np.tile(df1_array, (length, 1))
df1_tiled_frame = pd.DataFrame(df1_tiled, columns=columns, index=index)
product = df2.multiply(df1_tiled_frame, axis="columns")

相关问题 更多 >

    热门问题