python - 根据另外两个列和表在 Pandas 中创建列

标签 python pandas dictionary mapping

table = pd.DataFrame(data=[[1,2,3],[4,5,6],[7,8,9]],
                 columns=['High','Middle','Low'],
                index=['Blue','Green','Red'])

df = pd.DataFrame(data=[['High','Blue'],
                    ['High','Green'],
                    ['Low','Red'],
                   ['Middle','Blue'],
                    ['Low','Blue'],
                    ['Low','Red']],
             columns=['A','B'])

>>> df
        A      B
0    High   Blue
1    High  Green
2     Low    Red
3  Middle   Blue
4     Low   Blue
5     Low    Red

>>> table
       High  Middle  Low
Blue      1       2    3
Green     4       5    6
Red       7       8    9

我正在尝试添加基于表中值的第三列“C”。所以第一行的值为 1,第二行的值为 4,依此类推。

如果这是一维查找,我会将表转换为字典并使用 df['C'] = df['A'].map(table)。但是,由于这是二维的,我不知道如何使用 map 或 apply。

理想情况下,我会将表格转换为字典格式,以便将其与其他字典一起保存在 json 中,但这不是必需的。

最佳答案

pandas 查找

table.lookup(df.B,df.A)
Out[248]: array([1, 4, 9, 2, 3, 9], dtype=int64)

#table['c']=table.lookup(df.B,df.A)

或者df.apply(lambda x : table.loc[x['B'],x['A']],1)个人不喜欢apply

关于python - 根据另外两个列和表在 Pandas 中创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51865705/

相关文章:

python - 如何过滤 Pandas 中的列?

python - 需要 Pandas 中的行值列表

ios - 如何找到 map 中某个点的角度方向(相对于北方)

python - 按值排序字典python

c++ - std::map 上的哪些操作是线程安全的?

python - 正则表达式帮助将列表拆分为二元组

python - 如何运行 Python CGI 脚本

python - 如何让 Pandas 打印出数据而不是内存地址?

Python lambda 闭包作用域

python - 使用 linspace : array does not own its data 创建的调整数组大小