python - 将多维矩阵相乘以获得具有新列名的新数据框
问题描述
我用 [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}
解决方案
将它完全排除在数据帧之外可能更容易,除非您当前在数据帧中拥有信息(在这种情况下,写回,我将向您展示如何做到这一点)。
现在,这可能更容易:
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)
推荐阅读
- r - 用另一个数据框的值替换数据框列中的值
- swift - Date() 的打印显示时间减去 1 小时
- swift - 迭代 list.count 后的 Swift 总是 0
- java - 使用 gson 包解析嵌套的 json 结构
- sql - 有没有办法通过 SAP HANA 上的查询来更新计算视图?
- android - Git 无法拉取错误无关的历史
- maven - TestNG:排除属于多个组的测试
- c# - 如何在自定义选择器中设置和获取选定值?该值不可更改
- django - 当请求来自用户登录的页面时,自动验证 DRF。如果 api 请求是从外部发出的,则请求令牌身份验证
- android - java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.GridView.setAdapter