基于正则表达式字典填充 Pandas DataFrame 列

2023-12-04

我有一个如下所示的数据框:

    GE    GO
1   AD    Weiss
2   KI    Ruby
3   OH    Port
4   ER    Rose
5   KI    Rose
6   JJ    Weiss
7   OH    7UP
8   AD    7UP
9   OP    Coke
10  JJ    Stout

我正在尝试根据列的值再添加一列GO。我正在考虑使用字典,但我需要使用正则表达式来识别实际情况中的部分匹配。例如:

Dic={'Weiss|\wuby|Sto\w+':'Beer', 'Port|Rose':'Wine','\dUP|Coke':'Soda'}

这会给

    GE    GO    OUT
1   AD    Weiss Beer
2   KI    Ruby  Beer
3   OH    Port  Wine
4   ER    Rose  Wine
5   KI    Rose  Wine
6   JJ    Weiss Beer
7   OH    7UP   Soda
8   AD    7UP   Soda
9   OP    Coke  Soda
10  JJ    Stout Beer

lambda 函数在这里可以工作吗?我如何将其变成正则表达式?提前致谢!


你可以这样做:

In [253]: df['OUT'] = df[['GO']].replace({'GO':Dic}, regex=True)

In [254]: df
Out[254]:
    GE     GO   OUT
1   AD  Weiss  Beer
2   KI   Ruby  Beer
3   OH   Port  Wine
4   ER   Rose  Wine
5   KI   Rose  Wine
6   JJ  Weiss  Beer
7   OH    7UP  Soda
8   AD    7UP  Soda
9   OP   Coke  Soda
10  JJ  Stout  Beer

有趣的观察- 在较旧的 Pandas 版本中,Series.map()方法几乎总是比DataFrame.replace() and Series.str.replace()方法。它在 Pandas 0.19.2 中变得更好:

In [267]: df = pd.concat([df] * 10**4, ignore_index=True)

In [268]: %timeit df.GO.map(lambda x: next(Dic[k] for k in Dic if re.search(k, x)))
1 loop, best of 3: 1.57 s per loop

In [269]: %timeit df[['GO']].replace({'GO':Dic}, regex=True)
1 loop, best of 3: 895 ms per loop

In [270]: %timeit df.GO.replace(Dic, regex=True)
1 loop, best of 3: 876 ms per loop

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

基于正则表达式字典填充 Pandas DataFrame 列 的相关文章

  • R 中的列乘以子字符串

    假设我有一个数据框 其中包含多个组件及其在多个列中列出的属性 并且我想对这些列运行多个函数 我的方法是尝试将其基于每个列标题中的子字符串 但我无法弄清楚如何做到这一点 下面是数据框的示例 Basket F Type 1 F Qty 1 F
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • Spark的distinct()函数是否仅对每个分区中的不同元组进行洗牌

    据我了解 distinct 哈希分区 RDD 来识别唯一键 但它是否针对仅移动每个分区的不同元组进行了优化 想象一个具有以下分区的 RDD 1 2 2 1 4 2 2 1 3 3 5 4 5 5 5 在此 RDD 上的不同键上 所有重复键
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • 运行多个 scrapy 蜘蛛的正确方法

    我只是尝试使用在同一进程中运行多个蜘蛛新的 scrapy 文档 http doc scrapy org en 1 0 topics practices html但我得到 AttributeError CrawlerProcess objec
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • Pandas Dataframe 中 bool 值的条件前向填充

    问题 如何转发 fill boolTruepandas 数据框中的值 如果是当天的第一个条目 True 到一天结束时 请参阅以下示例和所需的输出 Data import pandas as pd import numpy as np df
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Python - 按月对日期进行分组

    这是一个简单的问题 起初我认为很简单而忽略了它 一个小时过去了 我不太确定 所以 我有一个Python列表datetime对象 我想用图表来表示它们 x 值是年份和月份 y 值是此列表中本月发生的日期对象的数量 也许一个例子可以更好地证明这
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • glpk.LPX 向后兼容性?

    较新版本的glpk没有LPXapi 旧包需要它 我如何使用旧包 例如COBRA http opencobra sourceforge net openCOBRA Welcome html 与较新版本的glpk 注意COBRA适用于 MATL
  • 从 Python 中的类元信息对 __init__ 函数进行类型提示

    我想做的是复制什么SQLAlchemy确实 以其DeclarativeMeta班级 有了这段代码 from sqlalchemy import Column Integer String from sqlalchemy ext declar
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • Spark.read 在 Databricks 中给出 KrbException

    我正在尝试从 databricks 笔记本连接到 SQL 数据库 以下是我的代码 jdbcDF spark read format com microsoft sqlserver jdbc spark option url jdbc sql
  • Pandas 与 Numpy 数据帧

    看这几行代码 df2 df copy df2 1 df 1 df 1 values 1 df2 ix 0 0 我们的教练说我们需要使用 values属性来访问底层的 numpy 数组 否则我们的代码将无法工作 我知道 pandas Data

随机推荐

  • ggplot 中的数据重新排序

    新的并坚持使用 ggplot 我有以下数据 tribe rho preference watermass 1 Luna2 1 000 hypolimnic 2 OP10I A1 1 000 epilimnic 3 B0 FO56C 0 98
  • 从 @selector 中关闭视图控制器而不创建单独的方法

    我试图通过直接从按钮执行它来关闭呈现的视图控制器 而不是为其创建一个单独的方法 但我不知道如何让它工作 或者是否可能 如有任何帮助 我们将不胜感激 我正在尝试的代码 dismissButton addTarget self action s
  • 从 SQL Server 触发器发送消息

    当 SQL Server 2005 中发生某些事情时 我需要向正在运行的应用程序 Windows 服务 发出信号 是否可以将消息从触发器发送到同一系统上的外部应用程序 您可以使用SQL 服务代理排队做你想做的事 触发器可以创建对话并在队列上
  • 如何使 DrawerLayout 显示在工具栏下方?

    如何使抽屉布局位于操作栏 工具栏下方 我正在使用 v7 21 应用程序兼容库和新的工具栏视图 我看到的例子看起来像
  • 在 pyinstaller 生成的可执行文件中使用 pyunpack 并结合 try except

    我对 pyunpack 有一个奇怪的行为 pyunpack 是一个在可执行文件内用于解包的包 我想做以下事情 我有一个 7z 类型的文件 其结尾不是 7z 而是 sent 首先 我尝试直接解压缩它 这会导致捕获预期的错误 在这个错误捕获中
  • 需要帮助优化 mysql 的纬度/经度地理搜索

    我有一个 mysql 5 0 22 myisam 表 其中大约有 300k 条记录 我想在 5 英里半径内进行纬度 经度距离搜索 我有一个涵盖纬度 经度字段的索引 并且当我仅选择纬度 经度时速度很快 毫秒响应 但是 当我选择表中的其他字段时
  • 使用原始类中的自定义 Android AnalogClock 设置时间

    我想使用互联网上提供的 Android 开源项目的 AnalogClock 源代码制作一个自定义 AnalogClock 类 我想让时钟设置我想要的时间 而不是当前时间 我没有找到关于如何执行此操作的明确示例 因此也许这篇文章会很有用 将源
  • 对汇编 x86 中的数组求和。关于输入的索引

    我在添加数组但在输入的索引上遇到一些问题 例如 用户输入 4 作为起始数组 6 作为结束数组 因此我必须循环 array 4 到 array 6 并将数字相加 我不确定是否可以在 ArraySum 过程中使用 data 中的数组 我是否必须
  • 在 jquery 中引用选择器比实际调用选择器更快吗?如果是这样,有多大区别?

    preview button click preview button slide preview button whatever 这样做是否是更好的做法 var preview button preview button preview
  • python中的reverse()用法?

    sort 和reverse 方法会在对大型列表进行排序或反转时适当修改列表以节省空间 提醒您 它们的操作有副作用 它们不会返回排序或反转的列表 上述文字可以在以下位置找到http docs python org 2 library stdt
  • 执行光线投射时 Camera.main 为 null

    生成错误的代码 void Update if Input touchCount gt 0 RaycastHit2D hit Physics2D Raycast Camera main ScreenToWorldPoint Input Get
  • Laravel 5 中未找到用户类

    我有以下问题 我刚刚从 4 2 升级到 Laravel 5 但是我首先复制到新的 Controllers 文件夹的 UserController 不起作用 它总是告诉我它不适合用户模型 当我复制它时 我的代码如下所示 用户控制器 php
  • 如果列包含逗号分隔值,则创建单独的行

    假设我们有一个简单的选择查询 它返回如下结果 FirstName LastName PayScale Craig L 150000 Alice Lisa simons 100000 所以如果我们有逗号分隔的名字 那么我想要这样的结果 Fir
  • 通过 TAB 键导航

    I m working on LAMP application In my application I m using iframe I want to navigate through my application via Tab key
  • 堆上非常大的数组 (Visual C++)

    我希望有人可以帮助我 我正在尝试使用 Visual C 2010 在我的应用程序上创建一个 int 400000000 4 亿 数组 但它会生成溢出错误 相同的代码在 Linux 上使用 g 运行 我需要这个 因为我正在处理大型矩阵 先感谢
  • 在窗口加载时逐渐淡入元素

    我希望按代码顺序淡入具有特定类的 div 每次淡入淡出可能会在最后一次淡出之后 250 毫秒 给人一种渐进页面加载的印象 我已经到了这样的地步 一下子就消失了 window load function div fade this pleas
  • 为什么 numpy 和 random 模块为同一种子给出不同的随机数?

    对于相同的种子 为什么 random random 与 numpy random 相比会产生不同的随机值 我的理解是他们都使用 Mersenne Twister 来生成随机值 import random as rnd import nump
  • 如何从 Veins Car2X 模拟器中的 TraCIDemoRSU11p 访问 TraCI 命令界面?

    我想从 Veins Source for OMNet 中 RSU 模型的应用层访问 TraCI 的命令接口 但我找不到这样的 谁能帮我这样做吗 请注意 对于 RSU 节点 我没有将 TraciMobility 作为父模块 它只有 BaseM
  • Nginx - 有时会抛出 502 Bad Gateway

    我有一个项目 Django gunicorn nginx 它大部分都能工作 大多数端点 但有时 nginx 会抛出 502 BAD GATEWAY 错误是upstream prematurely closed connection whil
  • 基于正则表达式字典填充 Pandas DataFrame 列

    我有一个如下所示的数据框 GE GO 1 AD Weiss 2 KI Ruby 3 OH Port 4 ER Rose 5 KI Rose 6 JJ Weiss 7 OH 7UP 8 AD 7UP 9 OP Coke 10 JJ Stout