Python pandas-将嵌套字典值映射到dataframe列

Python pandas-将嵌套字典值映射到dataframe列,python,pandas,Python,Pandas,我将进一步讨论前面关于将字典值映射到数据帧的问题。我有一个简单的数据帧df,如: U,id 111,01 112,02 112,03 113,04 113,05 113,06 114,07 我想在一个新列上映射以下嵌套字典: d = {112: {'en': 1, 'es': 2}, 113: {'zh': 1, 'ja': 1, 'es': 2}, 114: {'es': 1}, 111: {'ar': 2, 'en': 1}} 仅考虑最常见的L值,即112:'es',113:'es',1

我将进一步讨论前面关于将字典值映射到数据帧的问题。我有一个简单的数据帧df,如:

U,id
111,01
112,02
112,03
113,04
113,05
113,06
114,07
我想在一个新列上映射以下嵌套字典:

d = {112: {'en': 1, 'es': 2}, 113: {'zh': 1, 'ja': 1, 'es': 2}, 114: {'es': 1}, 111: {'ar': 2, 'en': 1}}
仅考虑最常见的
L
值,即112:'es',113:'es',114:'es',111:'ar'

在一个简单的字典案例中,我可以使用
df['C']=df['U'].map(d)
。我如何仅使用以前的最高值来执行相同的操作?生成的数据帧将显示为:

U,id,C
111,01,ar
112,02,es
112,03,es
113,04,es
113,05,es
113,06,es
114,07,es

我会将dict展平以创建一个新dict,然后您可以像以前一样调用
map

In [44]:

max_d={}
for k,v in d.items():
    max_d[k] = max(v, key=v.get)
max_d
Out[44]:
{111: 'ar', 112: 'es', 113: 'es', 114: 'es'}
In [45]:

df['C'] = df['U'].map(max_d)
df  
Out[45]:
     U  id   C
0  111   1  ar
1  112   2  es
2  112   3  es
3  113   4  es
4  113   5  es
5  113   6  es
6  114   7  es

当然是我在找的!