簡體   English   中英

將一列字典列表轉換為一個列列表,以便從列表中每個字典下的鍵“name”派生值

[英]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

輸入列有可變數量的字典列表,它不是固定的。

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']

假設你有這個 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,...

您可以使用兩個列表推導式提取它:

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'}]
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM