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

2023-12-09

在 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']}

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

What the DataFrame should look like.

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


最简单的方法
Using 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐

  • Android 日历提供程序 API 级别

    我们正在开发一个 Android 日历应用程序 问题是我们想要获取其他日历的事件并将我们的事件也分享给他们 据我所知 这是由内容提供商实现的 问题是日历内容提供程序所需的API级别是API 14 我们需要在API 7 Android 2 1
  • CGImageRef 宽度与每行字节数不一致

    我正在尝试从屏幕缓冲区中读取像素 我正在创建一个CGImageRef with CGDisplayCreateImage 但值CGImageGetWidth and CGImageGetBytesPerRow在一起没有意义 将每行字节数除以
  • 如何在sql server中将数字写入word函数[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何在 SQL Server 中编写一个函数来以文字形式输出数字 input 1输出 1个 输入 129输出 一百二十九 考虑使用辅助数字表 注意 这个 MS SQL 创建一个序
  • Firebase:setPersistenceEnabled 和 keepSynced 之间有什么区别?

    我一直认为 当我使用以下内容时 所有聊天对话数据都可以随时离线使用 但不知何故不是 所有节点都是从服务器加载的 FirebaseDatabase getInstance setPersistenceEnabled true 然后 根据 DO
  • Swift 广播流媒体 AVPlayer

    我想在 Swift 中从互联网传输音频 但还没有找到正确的功能示例 In Objective C AVPlayerItem playerItem AVPlayerItem playerItemWithURL NSURL URLWithStr
  • 使用 PHP 和 CURL 发出 PUT 请求

    首先 我基于以下假设进行工作 根据 REST 架构 您可以使用 PUT 创建新资源 在我的例子中是一个包含用户提供的附加信息的文件 如果这个概念不正确 请告诉我 这样我就不会从架构的角度提出错误的问题 我发现有两件事与使用 CURL 的 P
  • Python 正则表达式模式 * 未按预期工作

    在工作过程中Google 2010 年 Python 课程 我找到了以下文档 左侧出现 0 次或多次模式 但是当我尝试以下操作时 re search r i biiiiiiiiiiiiiig group 我期望 iiiiiiiiiiiiii
  • jqueryui自动完成限制多项选择

    我正在使用 jQuery UI 自动完成 并试图限制多个结果 基本上 我正在构建一个 PM 系统 我正在使用 收件人 字段的自动完成功能 但我试图限制一条消息可以发送给的人数 因此 将最大选择限制为 25 有什么办法可以限制这个吗 还有关于
  • Android中如何保存RecyclerView的滚动位置?

    我有位于 SwipeRefreshLayout 内部的 Recycler 视图 此外 能够在另一个活动中打开每个项目 返回到 Recycler 后 我需要滚动到所选项目 或滚动到上一个 Y 怎么做 是的 我用谷歌搜索 在 StackOver
  • 如何使用 thymeleaf 序列化 POJO?

    我想在 a 中插入一个 POJO 普通的旧 java 对象 作为普通 Json
  • 使用 AVG() 进行 MySQL 查询时出现问题

    我正在使用一个查询 该查询取每个给定 id 的所有记录的平均值 query SELECT bline id AVG flow as flowavg FROM blf WHERE bline id BETWEEN 1 AND 30 GROUP
  • 将结构放入匿名名称空间有什么作用? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么使用未命名的命名空间以及它们有什么好处 查看某人的代码 这就是他们声明的内容 namespace struct myStruct int x int y obj1 在一个函数中我看到它是这样使用
  • 允许调度程序切换正在执行的线程的机制是什么?

    我知道CPU调度程序使用时间片并让一个线程运行指定的时间 然后切换线程 但我不明白的是CPU如何知道停止执行线程并切换任务 它不能在每条指令后重复检查时钟 对吗 这将花费大量的开销 这将是非常浪费的 我不认为它在线程上使用一些确定性计算来在
  • 使用 sockaddr_in 的值填充 sockaddr_storage 结构

    我有一个sockaddr storage对象 我需要用用户提供的值填充它 请注意 用户可以提供其中之一AF INET or AF INET6作为填充结构的域 void fill sockaddr storage addrStruct int
  • 可变参数宏中的参数计数无效

    我正在尝试创建一个宏 它将迭代定义的术语列表 并为每个术语调用另一个宏 可能还带有附加参数列表 这是我得到的 define ITERATE OVER TERMS MACRO MACRO Term1 VA ARGS MACRO Term2 V
  • 如何按

    from pywinauto import application app application Application start C Program Files Microsoft Office Office12 EXCEL exe
  • 删除 URL 中的 .PHP 文件扩展名

    我在强制删除 URL 中的 php 文件扩展名时遇到了一个小问题 如果用户执行以下操作 我可以成功删除 php 文件扩展名 Remove PHP if original request is foo bar php RewriteCond
  • Woocommerce 调用网址(完成订单后)

    我有 3 个问题 需要帮助 我不知道 如何运行这个插件 给我致命错误 请检查我的脚本 我是初学者 需要管理页面帮助来设置 APIkey 并选择调用 URL 的语言http xxx CZ or http xxx SK 此页面尚未编写脚本 如何
  • 通过 CLI 在 java 中传递参数

    在传递参数时Java通过CLI我们通常会像 java cp jar classname args 0 args 1 我想传递像这样的参数 host hostname user username password password等等 请帮助
  • 有没有一种方法可以从列表字典中创建虚拟变量的数据框?

    在 pandas 中 我有一本字典 如下所示 Anemones allies Carnivore Ants bees wasps Omnivore Herbivore Nectar Insects Parasite Beetles bugs