Python 通过使用dataframe中的多个列作为数据库中嵌套字典的键来更新列行

Python 通过使用dataframe中的多个列作为数据库中嵌套字典的键来更新列行,python,pandas,dataframe,dictionary,Python,Pandas,Dataframe,Dictionary,如果我有一个具有以下结构的数据帧: Sub-Segment City State Mexico Unmanaged MEXICO DF GB France Unmanaged PARIS AB Canada CCLM MONTREAL BC 我想创建一个名为“Regions”的新列,它根据子段、城市和州映射不同的列。因此,要计算非托管墨西哥的区域字段,我们只需要引用城市,但是对于“加拿大CCLM”,区域是通过引用州列计算的。因此,我创建

如果我有一个具有以下结构的数据帧:

Sub-Segment       City       State
Mexico Unmanaged  MEXICO DF  GB
France Unmanaged  PARIS      AB
Canada CCLM       MONTREAL   BC

我想创建一个名为“Regions”的新列,它根据子段、城市和州映射不同的列。因此,要计算非托管墨西哥的区域字段,我们只需要引用城市,但是对于“加拿大CCLM”,区域是通过引用州列计算的。因此,我创建了一个嵌套字典

regions={ 'Mexico_Managed':
             {
                 'MEXICO DF': 'Mexico City',
                 'MEXICO':'Mexico City',
             },
          'Canada_CCLM':
              {
                  'BC':'Western Region',
                  'AB':'Western Region',
              }
 }

我尝试创建如下所示的region列,但它只映射了“City”列


现在,我希望能够使用子段“canada cclm”下的值更新regions列,并在数据框中引用“state”列。请帮帮我,我一直被困在这个问题上

您是否有需要以何种方式映射的子段名称?如果您有这些信息,那么您应该编写一个可调用的,并通过“State”列使用
applymap
Yea so Canada CCLM maps region。你能给我一个语法方面的例子吗?为它创建一个小函数,然后使用
apply()
,可能会更简单。这很简单,只需比较该值,并在if-else链中返回该键所需的内容maybe@Aditya试图避免使用if-else语句,但我找到了解决方法!谢谢
df['Region']=df['City'].map(regions['Mexico_Managed'])