【发布时间】:2017-01-28 22:08:03
【问题描述】:
我正在尝试将两个 pandas 数据帧相乘。具体来说,我想将每一列与另一个 df 的每一列相乘。
数据帧是 one-hot 编码的,所以它们看起来像这样:
col_1, col_2, col_3, ...
0 1 0
1 0 0
0 0 1
...
我可以使用 for 循环遍历每一列,但在 python 中计算成本很高,我希望有一种更简单的方法。
其中一个数据框有 500 列,另一个有 100 列。
这是迄今为止我能写的最快的版本:
interact_pd = pd.DataFrame(index=df_1.index)
df1_columns = [column for column in df_1]
for column in df_2:
col_pd = df_1[df1_columns].multiply(df_2[column], axis="index")
interact_pd = interact_pd.join(col_pd, lsuffix='_' + column)
我遍历 df_2 中的每一列并将所有 df_1 乘以该列,然后将结果附加到 interact_pd。但是,我宁愿不使用 for 循环来执行此操作,因为这在计算上非常昂贵。有没有更快的方法?
编辑:示例
df_1:
1col_1, 1col_2, 1col_3
0 1 0
1 0 0
0 0 1
df_2:
2col_1, 2col_2
0 1
1 0
0 0
interact_pd:
1col_1_2col_1, 1col_2_2col_1,1col_3_2col_1, 1col_1_2col_2, 1col_2_2col_2,1col_3_2col_2
0 0 0 0 1 0
1 0 0 0 0 0
0 0 0 0 0 0
【问题讨论】:
-
如果您尝试过,您需要生成可重现的示例,清楚地展示您想要的输出,并解释您之前努力的缺点。
-
互动是什么意思?
-
刚刚编辑了这个问题 - 它更有意义吗?
-
向我们展示 2(短)df 和您期望的相应输出。
-
如果第二个数据帧的每一列的列数不同,你想如何将第一个数据帧的每一列与第二个数据帧的每一列相乘?您的目标是 50000 列的结果吗?
标签: python pandas numpy dataframe