简体   繁体   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

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.

相关问题 Pandas,字典列表,其中值是一个列表。 将字典键转换为列名。 将值列表中的每个元素转换为一行 - Pandas, list of dictionaries where values are a list. Convert dictionary keys into column names. Convert each element in value list to a row 将字典列表写入CSV,并在新列中包含每个字典的值 - Writing list of dictionaries to CSV with each dictionary's values in a new column 如何将字典列表转换为列表值中每个字典的列表? - How to convert a list of dictionaries into a list of each dictionary in the list's values? 如果与列表中每个字典中的一个键的值匹配,则将具有不同词典值的新键添加到词典列表中 - Add new key to list of dictionaries with the values from a different dictionaries if matched with value of one key in each dictionary in a list 按字典列对字典列表进行分组 - Group list of dictionaries by dictionary column 如何更改字典列表中每个字典中的键名 - How to alter the name of a key in each dictionary in a list of dictionaries 在作为字典列表的 dataframe 列中,如何使用逗号连接值,并将每个嵌套键作为新列? - In a dataframe column that is a list of dictionaries, how to join values with a comma having each nested key as a new column? 将行转换为 pandas 中列下的值列表 - Convert Rows into List of values under a column in pandas 从字典列表中的字典键中获取列表 - Get a list from the dictionary key in a list of dictionaries Pandas 键列表列和值列表列到字典列表的列 - Pandas column of list of keys and column of list of values to a column of a list of dictionaries
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM