我用[6,2]和[3,2]创建了2个DataFrame。我想多个2 DataFrames获得[6,3]矩阵。我正在使用下面的循环,但这给了我一个返回的self._getitem_column(key)错误。下面是一个示例。
df1= pd.DataFrame{[1,2,3,4,5,6],
[23,24,25,26,27,28]}
df2= pd.DataFrame{[1,2,3],
[12,13,14]}
for j in range(len(df2)):
for i in range(len(df1)):
df3 = (df1[i, 2] * df2[j,2])
#expected result
df3= {0 1 2 3
1 276 299 322
2 288 312 336
3 300 325 350
4 312 338 364
5 324 351 378
6 336 364 392}
答案 0 :(得分:0)
将其完全排除在数据框中可能会更容易,除非您当前在数据框中包含信息(在这种情况下,请写回信,我将向您展示如何做到这一点)。
现在,这可能会更容易:
list1 = list(range(23,29)) # note that you have to go one higher to include 28
list2 = list(range(12,15)) # same deal
outputlist = []
for i in list1:
for j in list2:
outputlist.append(i * j)
import numpy as np
outputlist = np.array(outputlist).reshape(len(df1),len(df2))
import pandas as pd
df3 = pd.DataFrame(outputlist)
编辑:好的,这可能会把您带到需要去的地方,然后:
list3 = []
for j in range(len(df2)):
for i in range(len(df1)):
list3.append(df1.loc[i+1,0] * df2.loc[j+1,0])
import numpy as np
list3 = np.array(outputlist).reshape(len(df1),len(df2))
df3 = pd.DataFrame(list3)
再次编辑:试试看!只需确保将“ thenameofthecolumnindf1”替换为您感兴趣的df1中列的实际名称,等等。
import numpy as np
list3 = []
for i in df1[thenameofthecolumnindf1]:
for j in df2[thenameofthecolumnindf2]:
list3.append(i * j)
list3 = np.array(list3).reshape(len(df1),len(df2))
df3 = pd.DataFrame(list3)
答案 1 :(得分:0)
用于此的数学根本无法工作。要进行矩阵乘法,第一个矩阵(6)中的列数应等于第二个矩阵(2)中的行数。由于行/列值不匹配,您可能会遇到键索引错误。
为了正确地将它们相乘,您必须考虑3个不同的维度,而不仅仅是上面的2个。