首页 > 解决方案 > Python:基于多个数据框列的矩阵值

问题描述

我一直在解决一个问题,我有一个包含两列的数据框,并且我试图返回一个基于单独矩阵的值。

我尝试过的大多数事情只适用于单个列,并且涉及进入循环以获取更多信息——这需要一整天的时间来运行。

矩阵: 在此处输入图像描述

df: 在此处输入图像描述

我正在尝试制作一个数据框 col3,它将在第 1 行输出“1”,在第 2 行输出“8”。

标签: python

解决方案


让我们声明您的 DataFrame 和您的矩阵(假设这是一个 Numpy 矩阵,因此由整数索引):

import pandas as pd
import numpy as np

df = pd.DataFrame({"col1": ['a', 'b'], "col2": ['x', 'y']})
M = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]])

一种选择是首先将字母转换为矩阵的索引,然后根据这些索引和 Numpy 索引填充目标列:

df["num_col1"] = df["col1"].map(ord) - ord('a')
df["num_col2"] = df["col2"].map(ord) - ord('x')
df["result"] = M[df["num_col2"], df["num_col1"]]
df = df.drop(["num_col1", "num_col2"], axis = 1)

推荐阅读