使用循环从 Pandas 列构建 Python 字典 [重复]

Posted

技术标签:

【中文标题】使用循环从 Pandas 列构建 Python 字典 [重复]【英文标题】:Build Python dictionary from Pandas columns using loop [duplicate] 【发布时间】:2020-08-03 06:41:16 【问题描述】:

我有一个这样的熊猫数据框

**Breed     Animal**
Orange Tab  Cat
Tuxedo      Cat
Tabby       Cat
Husky       Dog
Golden      Dog
Labrador    Dog
Poodle      Dog
Koi         Fish
Fantail     Fish
GoldFish    Fish

并且想创建一个这样的字典

  mydict = 
  "Cat": ['Orange Tab', 'Tuxedo', 'Tabby'],
  "Dog": ['Husky','Golden','Labrador','Poodle'],
  "Fish": ['Koi','Fantail','GoldFish']

我从来没有用 Pandas 数据框处理过字典,所以我不知道从哪里开始。 我想我必须使用嵌套的 for 循环,但不知道如何遍历数据框中的 Animal 部分。

提前致谢。

【问题讨论】:

【参考方案1】:

将groupby 与列表一起使用,然后转换为字典:

result = df.groupby('Animal')['Breed'].apply(list)
print(result.to_dict())

输出

'Cat': ['Orange Tab', 'Tuxedo', 'Tabby'], 'Dog': ['Husky', 'Golden', 'Labrador', 'Poodle'], 'Fish': ['Koi', 'Fantail', 'GoldFish']

【讨论】:

【参考方案2】:

你可以使用pandas.DataFrame.groupby:

df.groupby('Animal**')['**Breed'].agg(list).to_dict()

输出:

'Cat': ['Orange Tab', 'Tuxedo', 'Tabby'],
 'Dog': ['Husky', 'Golden', 'Labrador', 'Poodle'],
 'Fish': ['Koi', 'Fantail', 'GoldFish']

【讨论】:

以上是关于使用循环从 Pandas 列构建 Python 字典 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 python pandas 循环中对数据帧执行操作

迭代 4 个 pandas 数据框列并将它们存储到 4 个列表中,其中一个 for 循环而不是 4 个 for 循环

如何在不使用 python 循环的情况下检测和转换列值的单位?

如何使用 Pandas 从 Excel 中读取某些列 - Python

python--pandas分组聚合

从一个函数在 Pandas Dataframe 中创建多个列