根据列值和其他列更新 Pandas 单元格

2024-01-28

我希望根据一列中的值更新许多列;这对于循环来说很容易,但当有很多列和很多行时,对于我的应用程序来说花费的时间太长。获得每个字母所需的计数的最优雅的方法是什么?

期望的输出:

   Things         count_A     count_B    count_C     count_D
['A','B','C']         1            1         1          0
['A','A','A']         3            0         0          0
['B','A']             1            1         0          0
['D','D']             0            0         0          2

最优雅的绝对是 sklearn 的 CountVectorizer。

我将首先向您展示它是如何工作的,然后我将在一行中完成所有操作,这样您就可以看到它是多么优雅。

首先,我们将逐步进行:

让我们创建一些数据

raw = ['ABC', 'AAA', 'BA', 'DD']

things = [list(s) for s in raw]

然后读入一些包并初始化计数向量化器

from sklearn.feature_extraction.text import CountVectorizer
import pandas as pd

cv = CountVectorizer(tokenizer=lambda doc: doc, lowercase=False)

接下来我们生成一个计数矩阵

matrix = cv.fit_transform(things)

names = ["count_"+n for n in cv.get_feature_names()]

并另存为数据框

df = pd.DataFrame(data=matrix.toarray(), columns=names, index=raw)

生成这样的数据框:

    count_A count_B count_C count_D
ABC 1   1   1   0
AAA 3   0   0   0
BA  1   1   0   0
DD  0   0   0   2

优雅版:

以上所有内容都在一行中

df = pd.DataFrame(data=cv.fit_transform(things).toarray(), columns=["count_"+n for n in cv.get_feature_names()], index=raw)

Timing:

您提到您正在使用相当大的数据集,因此我使用 %%timeit 函数来给出时间估计。

@piRSquared 之前的回复(否则看起来非常好!)

pd.concat([s, s.apply(lambda x: pd.Series(x).value_counts()).fillna(0)], axis=1)

100 loops, best of 3: 3.27 ms per loop

我的答案:

pd.DataFrame(data=cv.fit_transform(things).toarray(), columns=["count_"+n for n in cv.get_feature_names()], index=raw)

1000 loops, best of 3: 1.08 ms per loop

根据我的测试,计数向量化器大约快 3 倍。

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

根据列值和其他列更新 Pandas 单元格 的相关文章

随机推荐

  • imagerotate() 不起作用

    我的 imagerotate PHP 函数有问题 我运行下面的脚本 它成功地使用 imagejpeg 创建了新图像 但新图像与原始图像相同 因此它不会旋转它 它在 Apache error log 中没有显示错误消息 所以我不知道 file
  • mysql用触发器设置最大行数

    我想创建一个最多包含 5 行的表 因此 如果我添加新行并且表已经有 5 行 则触发器应删除第一行并添加新行 e g my table id data 1 a 2 b 3 c 4 d 改成 my table id data 2 b 3 c 4
  • 是否可以创建一个通用的 Session.QueryOver

    出于好奇 是否可以使用 NHibernate 3 执行类似的操作 public IQueryable
  • 为什么我的程序会改变布尔值? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在编写一个简单的程序 用于检查输入单词是否可以用输入字母拼写 无论我输入什么 布尔值总是会更改为 true 即使 if 语句中
  • Symfony:Doctrine 数据装置:如何处理大型 csv 文件?

    我正在尝试使用学说数据固定装置从 大 CSV 文件 3Mo 37000 行 7 列 插入 在 mySQL 数据库中 数据 过程非常缓慢 此时我无法成功 可能我还得再等一会儿 我想学说数据装置并不是为了管理如此大量的数据 也许解决方案应该是将
  • 有免费的 XNA UI 库吗?

    我正在考虑游戏中的游戏用户界面 查看 XNAML http msmvps com blogs valentin pages xnaml component aspx http msmvps com blogs valentin pages
  • 类成员的继承,与模板混合

    在下面的代码中 为什么T2给出这个错误 m t was not declared in this scope 而结核病还好吗 我如何在仍然使用模板的情况下访问 T2 中的 T1 成员 All good class TA public TA
  • 如何为某种特定类型而不是全局设置 Json.NET ContractSerializer?

    我想仅为 ASP NET Web API 应用程序中的某些类型设置合同序列化程序 我可以在 App Start FormatterConfig cs 中全局设置设置 如下所示 public static void RegisterGloba
  • 简洁和匿名类型

    是否可以在 Dapper 中使用匿名类型 我可以看到如何使用动态即 connection Query
  • Java – 高效、数据库感知的实例级授权?

    在 JPA 应用程序中 我有一个场景 其中该应用程序是 列出给定用户有权提款的所有帐户 我有帐户实体和一个多对多表 其中列出了每个用户对每个帐户拥有的授权 为了实现上述场景 应用程序当前只是内部联接两个表 这非常快 现在 我计划添加一个显式
  • 从 SQL SERVER 中的 CTE 删除行

    我有一个 CTE 它是表上的选择语句 现在 如果我从 CTE 中删除 1 行 它会从我的基表中删除该行吗 如果我有一个临时表而不是 CTE 情况也是一样吗 检查DELETE语句文档 http msdn microsoft com en us
  • Azure 服务总线通知中心是否可以与 websockets 和 javascript 配合使用?

    我对使用 Azure 服务总线通知中心感兴趣 然而 我的第一个 客户端 将是使用 Knockout 与 ASP NET MVC 站点进行基于 Websocket 的连接 目前 我正在尝试使用 SignalR 向客户端推送通知 然而 如果我可
  • 从命令行运行 android 单元测试?

    我正在尝试按照以下方式在 android 平台上运行单元测试tutorial http developer android com guide topics testing testing android html 举例来说 我想为电子邮件
  • Symfony2 中 $em->clear() 出现未定义索引错误

    我编写了一个 Symfony 命令来从 API 导入一些数据 它可以工作 但问题是当我在数据库中插入一个大的 JSON 时 我的 PHP 内存使用量会增加 每次导入活动后 我的工作单位都会增加 2 我已经取消设置了所有使用过的对象 并且当你
  • 如何通过代码有选择地禁用浏览器文本输入中的自动填充?

    是否可以使用代码有选择地禁用文本字段中的自动填充功能 我正在 ASP Net AJAX 中开发自定义代码以在数据库中搜索建议 并且我想防止当用户开始在文本框中键入内容时出现浏览器建议 我正在寻找一种适用于最现代的浏览器 IE 7 和 8 F
  • Angular UI Router根命名视图模板从子视图更改

    安装程序使用 Angular v1 5 8 和 ui router v0 3 1 我的根视图有几个命名部分 为了简洁起见 我删除了其中的一些部分 看起来像这样 section div div section section div div
  • 上的 SlideToggle() 会导致“跳转”

    使用 jQuery 时slideToggle 函数显示 隐藏表中新行上的数据会导致其卡顿 然而 当使用slideToggle 显示 隐藏 div 它工作得非常顺利 谁能告诉我为什么会发生这种情况 小提琴示例 http jsfiddle ne
  • .net 的 S/MIME 库?

    我需要使用 C 创建 S MIME 消息 如 RFC 2633 S MIME 版本 3 消息规范 和 RFC 3335 中指定 我能找到的唯一 S MIME 库是一个商业库 http www example code com csharp
  • 如何使用或不使用尾部斜杠进行 301 重定向?

    我想重定向site com login OR site com login to site com wp login php 这是我到目前为止所拥有的 RewriteRule login wp login php R 301 L 但它不会重
  • 根据列值和其他列更新 Pandas 单元格

    我希望根据一列中的值更新许多列 这对于循环来说很容易 但当有很多列和很多行时 对于我的应用程序来说花费的时间太长 获得每个字母所需的计数的最优雅的方法是什么 期望的输出 Things count A count B count C coun