如何使用pandas将CSV文件转换为每个键对应多个值的字典
问题复现
你当前的CSV文件内容如下:
chicken, meat veal, meat rice, carbs potato, carbs carrot, veggies mushroom, veggies apples, fruits
当前使用的转换代码:
food = pd.read_csv('foods.csv', header=None, index_col=1, squeeze=False).to_dict()
存在的问题:生成的字典每个键仅对应一个值,不符合预期。你期望得到的输出为:
{'carbs':['potato','rice'], 'meat':['chicken','veal'], 'veggies':['mushroom','carrot'], 'fruits':['apples']}
解决方法
原代码的问题在于:将分类列设为索引后直接转字典时,重复索引对应的取值会被后续值覆盖,最终仅保留同索引的最后一个值。
你可以按分类列分组后将对应食物项转为列表,再转字典即可,修改后的代码如下:
import pandas as pd # 读取CSV文件,指定两列的列名 df = pd.read_csv('foods.csv', header=None, names=['food', 'category']) # 按分类分组,将同分类的食物合并为列表后转为字典 food_dict = df.groupby('category')['food'].apply(list).to_dict()
运行上述代码得到的food_dict就是你需要的结构。
内容的提问来源于stack exchange,提问作者newbzzs
相关产品推荐
相关产品推荐

