[英]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
The input column has a variable number of dictionary lists, it is not fixed.输入列有可变数量的字典列表,它不是固定的。
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'}]
This above input should be filtered so that the column will only have a single list with all the values of keys "name" collected from different dictionaries in the list.应过滤上述输入,以便该列只有一个列表,其中包含从列表中不同字典收集的键“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']
Suppose you have this DataFrame:假设你有这个 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...
Then:然后:
df['Facilities'] = df['Facilities'].apply(lambda x: [d['name'] for d in x])
print(df)
Prints:印刷:
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,...
You can extract it with two list comprehensions:您可以使用两个列表推导式提取它:
facility_names = [[facility["name"] for facility in facility_list] for facility_list in facilities]
Assuming that your input data is:假设您的输入数据是:
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.