python pandas根据其他列中的条件进行新列分类

2023-12-28

使用以下 python pandas dataframe df:

df = pd.DataFrame({'transaction_id': ['A123','A123','B345','B345','C567','C567','D678','D678'], 
                   'product_id': [255472, 251235, 253764,257344,221577,209809,223551,290678],
                   'product_category': ['X','X','Y','Y','X','Y','Y','X']})

transaction_id | product_id | product_category
A123              255472             X
A123              251235             X
B345              253764             Y
B345              257344             Y
C567              221577             X
C567              209809             Y
D678              223551             Y
D678              290678             X

我需要添加另一列“transaction_category”,它查看 transaction_id 以及 transaction_id 中包含哪些产品类别。 这是我正在寻找的输出:

transaction_id | product_id | product_category | transaction_id
123              255472             X                X only
123              251235             X                X only
345              253764             Y                Y only
345              257344             Y                Y only
567              221577             X                X & Y
567              209809             Y                X & Y
678              223551             Y                X & Y
678              290678             X                X & Y

请注意,我的数据框中还有其他未使用的列,所以我想我需要从 grouby 开始?

df2 = df.groupby(['transaction_id','product_category']).reset_index()

IIUC 通过使用transform and join

df.groupby('transaction_id').product_category.transform(lambda x : '&'.join(set(x)))
Out[468]: 
0      X
1      X
2      Y
3      Y
4    X&Y
5    X&Y
6    X&Y
7    X&Y
Name: product_category, dtype: object

来自 scott 的匹配您的预期输出:

df['transaction_category']=df.groupby('transaction_id')['product_category'].transform(lambda x: x + ' only' if len(set(x)) < 2 else ' & '.join(set(x)))
df
Out[479]: 
  product_category  product_id transaction_id transaction_category
0                X      255472           A123               X only
1                X      251235           A123               X only
2                Y      253764           B345               Y only
3                Y      257344           B345               Y only
4                X      221577           C567                X & Y
5                Y      209809           C567                X & Y
6                Y      223551           D678                X & Y
7                X      290678           D678                X & Y
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python pandas根据其他列中的条件进行新列分类 的相关文章

  • 刷新访问令牌时出现“invalid_grant”错误的情况?

    最近我一直在为这个问题揪心 一些背景 使用oauth2客户端 https code google com p google api python client 库来管理用户的令牌 这些令牌用于定期并发执行各种后台任务 每次要为用户运行其中一
  • 错误只有 size-1 数组可以转换为 Python 标量

    我有这个代码 for a in data X for i in a if not i isdigit x hash i data X column row x row row 1 row 0 column column 1 desired
  • OpenCV Python 删除图像中的某些对象

    我正在使用带有 opencv 和 numpy 的 python 来检测天文中的星星 例如这个1 https i stack imgur com AKwEJ jpg图片 使用模板匹配 我可以用阈值检测星星 单击 2 2 https i sta
  • Python中#和"""注释的区别

    开始用 Python 编程 我看到一些带有注释的脚本 and comments 这两种评论方式有什么区别 最好的事情就是阅读PEP 8 Python 代码风格指南 https www python org dev peps pep 0008
  • 使用 K 均值聚类 OpenCV 进行交通标志分割

    I used K Means Clustering to perform segmentation on this traffic sign as shown below 这些是我的代码 读取图像并模糊 img cv imread 000
  • 使用 Pandas 查找自滚动高点以来的周期数

    我在 Pandas 中使用rolling max函数 http pandas pydata org pandas docs stable computation html moving rolling statistics moments
  • Docker:通过 Gunicorn 运行 Flask 应用程序 - Worker 超时?表现不佳?

    我正在尝试创建一个用Python Flask编写的新应用程序 由gunicorn运行 然后进行dockerized 我遇到的问题是 docker 容器内的性能非常差 不一致 我最终得到了响应 但我不明白为什么性能会下降 有时我会在日志中看到
  • Python/Flask:应用程序在关闭后正在运行

    我正在开发一个简单的 Flask Web 应用程序 我使用 Eclipse Pydev 当我开发该应用程序时 由于代码更改 我必须经常重新启动该应用程序 这就是问题所在 当我运行该应用程序时 我可以在本地主机上看到该框架 这很好 但是当我想
  • 获取 zeep.exceptions.ValidationError:缺少与 suds 一起使用的方法的元素

    我正在移植开发的代码suds 0 6到zeep 2 4 0 以前的泡沫代码 client Client WSDLfile proxy proxy faults True config client factory create perUse
  • 如何在Python中获取绝对文件路径

    给定一条路径 例如 mydir myfile txt 如何在Python中找到文件的绝对路径 例如 在 Windows 上 我最终可能会得到 C example cwd mydir myfile txt gt gt gt import os
  • Python将csv数据导出到文件中

    我有以下运行良好的代码 但我无法修剪数据并将其存储在数据文件中 import nltk tweets love this car this view amazing not looking forward the concert def g
  • 指定 Parquet 属性 pyspark

    如何在 PySpark 中指定 Parquet 块大小和页面大小 我到处搜索 但找不到任何有关函数调用或导入库的文档 根据火花用户档案 https mail archives apache org mod mbox spark user 2
  • Scrapy - 不会爬行

    我正在尝试运行递归爬行 由于我编写的爬行不能正常工作 因此我从网络上提取了一个示例并进行了尝试 我真的不知道问题出在哪里 但是爬行没有显示任何错误 谁能帮我这个 另外 是否有任何逐步调试工具可以帮助理解蜘蛛的爬行流程 非常感谢任何与此相关的
  • pandas apply:函数名是否带引号的区别

    简单数据框定义示例 df pd DataFrame A 2 4 1 B 8 4 1 C 6 2 7 df A B C 0 2 8 6 1 4 4 2 2 1 1 7 尝试理解以下块中函数参数调用的差异 df apply sum df app
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • 在 groupby 聚合函数中传递参数

    我有我引用的数据框df在代码中 我在每组的多个列上应用聚合函数 我还应用了用户定义的 lambda 函数f4 f5 f6 f7 有些功能非常相似 例如f4 f6 and f7其中只有参数值不同 我可以从以下位置传递这些参数吗字典 d 这样我
  • tweepy 流到 sqlite 数据库 - 语法错误[重复]

    这个问题在这里已经有答案了 可能的重复 tweepy 流到 sqlite 数据库 语法无效 https stackoverflow com questions 9434205 tweepy stream to sqlite database
  • python 的 fcntl.flock 函数是否提供文件访问的线程级锁定?

    Python 的 fcnt 模块提供了一种名为 flock 1 的方法来证明文件锁定 其描述如下 对文件执行锁定操作op 描述符 fd 文件对象提供 fileno 方法被接受为 出色地 请参阅 Unix 手册集群 2 了解详情 在某些系统上
  • 如何在 Python 中解析损坏的 XML?

    我无法影响的服务器发送的 XML 非常损坏 具体来说 Unicode WHITE STAR 将被编码为 UTF 8 E2 98 86 然后使用 Latin 1 转换为 HTML 实体表 我得到的是 acirc 98 86 9 个字节 位于声
  • 提供节点名或服务名,或未知

    我收到这个 Python 错误 File Library Frameworks Python framework Versions 2 7 lib python2 7 urllib2 py line 1184 in do open rais

随机推荐

  • 如何对齐Gridview中心

    我想将 GridView 居中对齐 我还是这样 正如您在上图中看到的 我在左侧获取图像 但我想在中心显示图像 如下所示 另一件事是获得文本背景的额外宽度我如何仅在图像中显示文本背景 现在 gridview 位于中心 但仍然遇到问题 请参阅文
  • 在 Titanium 应用程序中找不到库 stlport_shared

    我想创建一个 Titanium 模块 因此我有一个扩展 KrollModule 及其方法的类 Kroll method public void example Activity activity this getActivity Strin
  • git 子模块的公共子模块

    我有一个申请main由多个子模块组成A B and utility functions 这两个子模块A and B本身包含子模块utility functions main A utility functions B utility fun
  • Tesseract-OCR 3.02 与 libc++

    Xcode 4 6 iOS SDK 6 1 tesseract ocr 3 02 由于最新的 OpenCV 版本是使用构建的libc 并且 tesseract ocr 是使用构建的libstdc 库 它们不能在一个 xcode 项目中一起使
  • 禁止用户订阅 Firebase 主题

    如何消除应用程序用户拨打电话的机会FirebaseMessaging subscribeToTopic String 为了仅在服务器端处理主题管理 Firebase 云消息传递主题是公开的 无法阻止特定用户订阅它们
  • ERRO[0043] 拨打 gRPC 失败:无法升级到 h2c,收到 501

    当我尝试使用以下命令构建 Dockerfile 时docker build t myimage1 今天我收到这个错误 ERRO 0043 failed to dial gRPC unable to upgrade to h2c receiv
  • 用lark语法识别多行部分

    我正在尝试编写一个简单的语法来解析具有多行部分的文本 我不知道该怎么做 这是我到目前为止写的语法 如果有任何帮助 我们将不胜感激 ps 我意识到 lark 对于这个问题来说太过分了 但这只是我试图解析的一个非常简化的版本 from unit
  • 调试多线程应用程序[重复]

    这个问题在这里已经有答案了 我有一个用 C 和 MFC 编写的应用程序 它在 Windows 上运行多线程 有时我确实会收到一些抱怨 例如由于这些线程而导致的死锁或未处理的异常 通常我使用 Visual Studio 如果问题可重现 或使用
  • 恢复 git merge 冲突标志

    我正在尝试找出一种与团队其他成员共享合并冲突的方法 我们有一些非常大的分支 合并它们会产生很多冲突 我尝试了几种不同的方法 我当前的尝试包括将处于冲突状态的文件推送到远程存储库 将合并标记留在文件中 然后运行一个烦人的长别名来 grep 通
  • SciPy Optimizer 给出不满足约束的结果

    我正在使用 scipy optimize minimize 来解决问题 但包给出的结果违反了约束 这种情况非常简单 只给出一个目标函数和一个约束 这是代码 import math import numpy as np import scip
  • 将所有 QLineEdits 设置为只读

    我试图将我的所有 QLineEdits 大约有 150 个 设置为只读 有没有办法在不单独检查和设置每个 QLineEdits 的情况下执行此操作 我希望我能做类似的事情QLineEdit setReadOnly true 在我的构造函数中
  • 用于查找无效电子邮件地址的 SQL 脚本

    数据导入是从 Access 数据库完成的 并且没有对电子邮件地址字段进行验证 有没有人有一个可以返回无效电子邮件地址列表 缺少 等 的sql脚本 SELECT FROM people WHERE email NOT LIKE 任何更复杂的事
  • Logstash 可以同时处理多个输出吗?

    我对 Logstash 和弹性搜索很陌生 我正在尝试将日志文件存储在elasticsearch 和平面文件中 我知道logstash 支持这两种输出 但它们是同时处理的吗 还是通过工作定期完成 是的 您可以通过使用托运人配置上的 add t
  • 为什么 Java 和 C# 中嵌套类的行为不同?

    我不明白为什么Java中出现以下代码错误 public abstract class TestClass private final int data protected TestClass int data this data data
  • 对于 read_csv 和数据值 NA 来说,这是正确的行为吗?

    我已经开了一个issue https github com pydata pandas issues 10647在 GitHub 以下行为对我来说似乎不正确 似乎如果默认为read csv is na values False那么包括 NA
  • 如何在 Javascript 中通过 标签分割字符串

    我有一个 data text 字符串 它返回如下值 span Name span Message Javascript 是否可以将这个值分成两个 以便我可以在两个不同的变量中获取 名称 和 消息 I tried var str data t
  • JVM进程大小和内存堆大小之间的巨大差异

    我正在 Windows 8 1 64 位 4GB RAM 上开发 java swing 应用程序JDK 版本 8u20 64 位 问题是当我启动应用程序时Netbeans 分析器带监视器选项 当第一个 Jframe 加载时 应用程序内存堆就
  • Neo4j 将数据存储在哪里?

    我是 Neo4j 的新手 正在 Ubuntu 上进行一些测试 我想知道 Neo4j 将数据存储在哪里 他们将创建的节点和关系存储在哪里 这应该有帮助 dpkg L neo4j config etc neo4j neo4j propertie
  • 分割空格避免双引号 JS 字符串:从 'a "b \\" c" d ' 到 ['a','"b \\" c"','d']

    我目前正在为自定义文件格式构建一个小型文本编辑器 我有一个 GUI 但我还实现了一个小型输出控制台 我想要实现的是添加一个非常基本的输入字段来执行一些命令并传递参数 命令如下所示 compile test json output bin l
  • python pandas根据其他列中的条件进行新列分类

    使用以下 python pandas dataframe df df pd DataFrame transaction id A123 A123 B345 B345 C567 C567 D678 D678 product id 255472