首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个数据帧相乘为矩阵,保留列和索引头

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

Stack Overflow用户
提问于 2018-07-16 23:13:20
回答 1查看 350关注 0票数 0

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

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

df_binary:

代码语言:javascript
复制
Cust_ID   Email     Topwater  Topwater  Topwater ...  Plastic  Plastic  Plastic
12345     i@me.com  1         0         0             1        1        0
...

df_pim:

代码语言:javascript
复制
Bait Name      Technique 1     Technique 2     Technique 3   ...   Technique 33
Topwater       1               1               1                   0
...
Plastic        1               0               0                   1

df_technique:

代码语言:javascript
复制
Cust_ID     Email      Technique 1      Technique 2      Technique 3   ...   Technique 33
12345       i@me.com   4                1                2                   1

其中“技巧”列是df_binary的行和df_pim的列的点积。

我已经在这个问题上挣扎了一段时间,这里是我到目前为止的三次尝试:

代码语言:javascript
复制
# 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')
EN

回答 1

Stack Overflow用户

发布于 2018-07-17 00:22:41

这个问题似乎来自于这样一个事实: df_binary中的2个额外的列Cust_ID和Email会导致您的维度与矩阵乘法不兼容。尝试以下操作:

代码语言:javascript
复制
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.

如果您不想处理多层索引,可以随时重新设置索引。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51365019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档