将两个数据帧相乘作为矩阵,保留列和索引头

2024-04-29 07:19:21 发布

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

我有两个数据帧,df_binary和df_pim。在

df_binary是形状(462,38),df_pim是形状(36,34)。它们看起来像这样:

df_二进制:

Cust_ID   Email     Topwater  Topwater  Topwater ...  Plastic  Plastic  Plastic
12345     i@me.com  1         0         0             1        1        0
...

德文皮姆:

^{pr2}$

我希望输出如下所示:

测向技术:

Cust_ID     Email      Technique 1      Technique 2      Technique 3   ...   Technique 33
12345       i@me.com   4                1                2                   1

其中,“技术”列是df_二进制文件行与df_pim列的点积。在

在这方面挣扎了一段时间,以下是我迄今为止的三次尝试:

# Try 1
df_pim.iloc[:,1:].mul(df_binary)

# Try 2
df_binary.iloc[:,2:].dot(df_pim.values)

# Try 3
df_binary.iloc[:,2:].multiply(df_pim,axis='index')

Tags: comiddfemail二进制me形状binary
1条回答
网友
1楼 · 发布于 2024-04-29 07:19:21

问题似乎来自于这样一个事实:你的两个额外列Cust_ID和df_二进制中的Email导致你的维数与矩阵乘法不兼容。尝试以下操作:

df_binary = df_binary.set_index(['Cust_id', 'Email']) df_technique = df_binary.dot(df_pim.values) df_techique.columns = df_pim.columns # If you want to remove layered indicies after dot product multiplication: df_technique.reset_index() #or set to whatever index you need.

和13;
和13;

如果您不想处理多层索引,您可以在以后重置索引。在

相关问题 更多 >