我有两个数据帧,df_binary和df_pim。
形状是df_binary (462,38),df_pim是形状(36,34)。它们看起来像这样:
df_binary:
Cust_ID Email Topwater Topwater Topwater ... Plastic Plastic Plastic
12345 i@me.com 1 0 0 1 1 0
...df_pim:
Bait Name Technique 1 Technique 2 Technique 3 ... Technique 33
Topwater 1 1 1 0
...
Plastic 1 0 0 1df_technique:
Cust_ID Email Technique 1 Technique 2 Technique 3 ... Technique 33
12345 i@me.com 4 1 2 1其中“技巧”列是df_binary的行和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')发布于 2018-07-17 00:22:41
这个问题似乎来自于这样一个事实: df_binary中的2个额外的列Cust_ID和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.
如果您不想处理多层索引,可以随时重新设置索引。
https://stackoverflow.com/questions/51365019
复制相似问题