【问题标题】:Convert a column of list of dictionaries to a column list such that the values are derived from the key "name" under each dictionary in the list将字典列表的列转换为列列表,以便从列表中每个字典下的键“名称”派生值
【发布时间】:2021-02-15 09:27:44
【问题描述】:

输入列有可变数量的字典列表,不是固定的。

INPUT column:

Facilities
[{'name': 'Work from home', 'icon': 'WFH.svg'}]
[{'name': 'Gymnasium', 'icon': 'Gym.svg'}, {'name': 'Cafeteria', 'icon': 'Cafeteria.svg'}, {'name': 'Work from home', 'icon': 'WFH.svg'}]
[{'name': 'Free food', 'icon': 'FreeFood.svg'}, {'name': 'Team outings', 'icon': 'TeamOuting.svg'}, {'name': 'Education assistance', 'icon': 'Education.svg'}]
[{'name': 'Soft skill training', 'icon': 'SoftSkillsTraining.svg'}, {'name': 'Job training', 'icon': 'JobTraining.svg'}]
[{'name': 'Free transport', 'icon': 'Transportation.svg'}, {'name': 'Work from home', 'icon': 'WFH.svg'}, {'name': 'Team outings', 'icon': 'TeamOuting.svg'}, {'name': 'Soft skill training', 'icon': 'SoftSkillsTraining.svg'}]

应过滤上述输入,以便该列只有一个列表,其中包含从列表中不同字典收集的键“name”的所有值。

Desired Output column:

Facilities
['Work from home']
['Gymnasium', 'Cafeteria', 'Work from home']
['Free food','Team outings','Education assistance']
['Soft skill training','Job training']
['Free transport', 'Work from home','Team outings','Soft skill training']

【问题讨论】:

    标签: python data-cleaning feature-extraction data-extraction feature-engineering


    【解决方案1】:

    假设你有这个 DataFrame:

    df = pd.DataFrame({'Facilities':[
    [{'name': 'Work from home', 'icon': 'WFH.svg'}],
    [{'name': 'Gymnasium', 'icon': 'Gym.svg'}, {'name': 'Cafeteria', 'icon': 'Cafeteria.svg'}, {'name': 'Work from home', 'icon': 'WFH.svg'}],
    [{'name': 'Free food', 'icon': 'FreeFood.svg'}, {'name': 'Team outings', 'icon': 'TeamOuting.svg'}, {'name': 'Education assistance', 'icon': 'Education.svg'}],
    [{'name': 'Soft skill training', 'icon': 'SoftSkillsTraining.svg'}, {'name': 'Job training', 'icon': 'JobTraining.svg'}],
    [{'name': 'Free transport', 'icon': 'Transportation.svg'}, {'name': 'Work from home', 'icon': 'WFH.svg'}, {'name': 'Team outings', 'icon': 'TeamOuting.svg'}, {'name': 'Soft skill training', 'icon': 'SoftSkillsTraining.svg'}],
        ]})
    
    print(df)
    
                                              Facilities
    0    [{'name': 'Work from home', 'icon': 'WFH.svg'}]
    1  [{'name': 'Gymnasium', 'icon': 'Gym.svg'}, {'n...
    2  [{'name': 'Free food', 'icon': 'FreeFood.svg'}...
    3  [{'name': 'Soft skill training', 'icon': 'Soft...
    4  [{'name': 'Free transport', 'icon': 'Transport...
    

    然后:

    df['Facilities'] = df['Facilities'].apply(lambda x: [d['name'] for d in x])
    print(df)
    

    打印:

                                              Facilities
    0                                   [Work from home]
    1             [Gymnasium, Cafeteria, Work from home]
    2    [Free food, Team outings, Education assistance]
    3                [Soft skill training, Job training]
    4  [Free transport, Work from home, Team outings,...
    

    【讨论】:

      【解决方案2】:

      您可以使用两个列表推导来提取它:

      facility_names = [[facility["name"] for facility in facility_list] for facility_list in facilities]
      

      假设你的输入数据是:

      facilities=[
      [{'name': 'Work from home', 'icon': 'WFH.svg'}],
      [{'name': 'Gymnasium', 'icon': 'Gym.svg'}, {'name': 'Cafeteria', 'icon': 'Cafeteria.svg'}, {'name': 'Work from home', 'icon': 'WFH.svg'}],
      [{'name': 'Free food', 'icon': 'FreeFood.svg'}, {'name': 'Team outings', 'icon': 'TeamOuting.svg'}, {'name': 'Education assistance', 'icon': 'Education.svg'}],
      [{'name': 'Soft skill training', 'icon': 'SoftSkillsTraining.svg'}, {'name': 'Job training', 'icon': 'JobTraining.svg'}],
      [{'name': 'Free transport', 'icon': 'Transportation.svg'}, {'name': 'Work from home', 'icon': 'WFH.svg'}, {'name': 'Team outings', 'icon': 'TeamOuting.svg'}, {'name': 'Soft skill training', 'icon': 'SoftSkillsTraining.svg'}]
      ]
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 2021-12-09
        • 1970-01-01
        相关资源
        最近更新 更多