【问题标题】:Matrix Multiplication of 2 Pandas DF's2个熊猫DF的矩阵乘法
【发布时间】:2018-10-31 03:41:45
【问题描述】:

我有 2 个熊猫数据框,形状分别为 (156915, 22) 和 (22,2)。 DF1 (156915, 22) 具有与 DF2 列 1 行匹配的列名。我想做矩阵乘法,其中 DF1.columns = DF2['col1']。下面是 df 的外观的快速视图。我想返回一个与 DF1 形状相同的熊猫数据框。提前谢谢!

DF1:

A | B  | C
1 | 15 | 8
5 | 3  | 2


DF2:

col1 | col2
A    | 5
B    | 1
C    | 0

【问题讨论】:

    标签: python python-3.x pandas matrix-multiplication


    【解决方案1】:

    一种方法:

    df3 = df2.set_index('col1')
    df1[df3.index].apply(lambda x: x*df3['col2'].T,axis=1)`
    

    【讨论】:

      【解决方案2】:

      如果您在DF1 中的列与您在DF2 中的col1 的顺序相同,那么使用np.dot 应该可以工作:

      np.dot(DF1, DF2['col2'])
      

      【讨论】:

      • 不幸的是,它们的顺序不同。
      • 您可以使用DF1.reindex_axis(sorted(df.columns), axis=1)DF1 中的列进行排序,然后使用col1 使用DF2.sort_values('col1')DF2 进行排序
      • 抱歉,我刚刚进行了编辑,但我希望返回与 DF1 大小相同的 pandas 数据帧。
      • 如果你使用矩阵乘法,返回的数据帧只有当且仅当DF2的大小是(22,22)时,返回的数据帧才会和DF1的大小相同。
      • 感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-04-11
      • 2017-03-11
      • 2013-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多