【问题标题】:pandas - map nested dictionary values to dataframe columnpandas - 将嵌套字典值映射到数据框列
【发布时间】:2015-07-24 13:53:31
【问题描述】:

我将进一步讨论this 上一个关于将字典值映射到数据帧的问题。我有一个简单的数据框 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

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我会将字典展平以创建一个新的字典,然后您可以像以前一样调用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
    

    【讨论】:

    • 我在寻找什么!
    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2020-03-23
    • 2020-05-21
    • 1970-01-01
    • 2020-05-18
    • 1970-01-01
    • 2020-09-01
    • 2021-01-01
    相关资源
    最近更新 更多