gpt4 book ai didi

python - 有没有一种方法可以从列表字典中创建虚拟变量的数据框?

转载 作者:行者123 更新时间:2023-11-28 21:39:10 26 4
gpt4 key购买 nike

在 pandas 中,我有一本字典,如下所示:

{'Anemones & allies': ['Carnivore'],
'Ants, bees & wasps': ['Omnivore', 'Herbivore', 'Nectar', 'Insects', 'Parasite'],
'Beetles & bugs': ['Herbivore', 'Carnivore', 'Nectar', 'Insects'],
'Birds': ['Carnivore'],
'Fishes': ['Carnivore', 'Plankton or Particles']}

我想将它转换成一个 DataFrame,您可以在其中看到动物类型可能吃什么。所以它看起来类似于下图:

What the DataFrame should look like.

当尝试生成这样的表格时,我感觉我的做法不对,因为我需要相当多的代码行。所以我的问题是,是否有一个很好的函数可以将这个字典映射到一个 DataFrame,使其看起来像上表?

最佳答案

最简单的方法
使用 pd.str.get_dummies

dct = {
'Anemones & allies': ['Carnivore'],
'Ants, bees & wasps': ['Omnivore', 'Herbivore', 'Nectar', 'Insects', 'Parasite'],
'Beetles & bugs': ['Herbivore', 'Carnivore', 'Nectar', 'Insects'],
'Birds': ['Carnivore'],
'Fishes': ['Carnivore', 'Plankton or Particles']
}

pd.Series(dct).str.join('|').str.get_dummies()

Carnivore Herbivore Insects Nectar Omnivore Parasite Plankton or Particles
Anemones & allies 1 0 0 0 0 0 0
Ants, bees & wasps 0 1 1 1 1 1 0
Beetles & bugs 1 1 1 1 0 0 0
Birds 1 0 0 0 0 0 0
Fishes 1 0 0 0 0 0 1

更复杂
不过大概推荐

from sklearn.preprocessing import MultiLabelBinarizer

dct = {
'Anemones & allies': ['Carnivore'],
'Ants, bees & wasps': ['Omnivore', 'Herbivore', 'Nectar', 'Insects', 'Parasite'],
'Beetles & bugs': ['Herbivore', 'Carnivore', 'Nectar', 'Insects'],
'Birds': ['Carnivore'],
'Fishes': ['Carnivore', 'Plankton or Particles']
}

s = pd.Series(dct)

mlb = MultiLabelBinarizer()

d = mlb.fit_transform(s)
c = mlb.classes_
pd.DataFrame(d, s.index, c)

Carnivore Herbivore Insects Nectar Omnivore Parasite Plankton or Particles
Anemones & allies 1 0 0 0 0 0 0
Ants, bees & wasps 0 1 1 1 1 1 0
Beetles & bugs 1 1 1 1 0 0 0
Birds 1 0 0 0 0 0 0
Fishes 1 0 0 0 0 0 1

关于python - 有没有一种方法可以从列表字典中创建虚拟变量的数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47209847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com