Skip to main content
 首页 » 编程设计

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

2025年05月04日11lexus

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