Python:基于多个数据框列的矩阵中的值

时间:2019-10-21 18:01:52

标签: python

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

我尝试过的大多数操作仅适用于单列,并且涉及进入循环以获取更多信息-这需要一整天的时间。

矩阵: enter image description here

df: enter image description here

我正在尝试制作一个数据帧col3,该数据帧在第1行中输出“ 1”,在第2行中输出“ 8”。

1 个答案:

答案 0 :(得分:0)

让我们声明您的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)