值得一看
广告
彩虹云商城
广告

热门广告位

Pandas DataFrame 中基于条件生成新列的教程

pandas dataframe 中基于条件生成新列的教程

本文介绍了如何基于 Pandas DataFrame 中现有列的值,根据特定条件创建新列。我们将探讨使用 apply 方法和匿名函数,以避免直接使用三元运算符可能遇到的问题,并提供清晰的代码示例和解释,帮助你高效地处理字符串数据。

在 Pandas DataFrame 中,经常需要根据现有列的值创建新的列。例如,根据合同编号的格式,提取特定的信息。本文将介绍如何使用条件语句和 Pandas 的字符串处理函数来实现这一目标。

问题描述

假设我们有一个包含客户合同编号(Client Contract Number)的 DataFrame。我们的目标是创建一个新的列(Search Text),其值取决于合同编号是否包含下划线 (_)。如果包含下划线,则新列的值为下划线之前的所有字符;否则,新列的值为删除所有短划线 (-) 后的完整合同编号。

示例数据

假设我们的 DataFrame 包含以下数据:

| Client Contract Number |
|—|—|
| 123_2-31 |
| 23-1415 |
| 124-5_259 |
| 1234 |

我们期望得到以下结果:

| Search Text |
|—|—|
| 123 |
| 231415 |
| 1245 |
| 1234 |

解决方案

硅基智能

硅基智能

基于Web3.0的元宇宙,去中心化的互联网,高质量、沉浸式元宇宙直播平台,用数字化重新定义直播

硅基智能62

查看详情
硅基智能

直接使用 Pandas Series 的 str.contains() 方法进行条件判断,并结合三元运算符可能会遇到 ValueError: The truth value of a Series is ambiguous 错误。这是因为 Pandas 无法直接将 Series 的真值用于条件判断。

为了解决这个问题,我们可以使用 apply 方法和匿名函数(lambda 函数)来逐行处理 DataFrame。

代码示例

import pandas as pd
# 创建示例 DataFrame
data = {"Client Contract Number": ["123_2-31", "23-1415", "124-5_259", "1234"] }
raw_data_df = pd.DataFrame(data)
# 首先,移除所有短划线
raw_data_df['Search Text'] = raw_data_df['Client Contract Number'].str.replace('-', '')
# 然后,使用 apply 方法和匿名函数进行条件判断
raw_data_df["Search Text"] = raw_data_df["Search Text"].apply(lambda x: x.split("_")[0] if "_" in x else x)
# 打印结果
print(raw_data_df)

代码解释

  1. 移除短划线: raw_data_df[‘Search Text’] = raw_data_df[‘Client Contract Number’].str.replace(‘-‘, ”) 首先创建一个新的列 Search Text,并将 Client Contract Number 列中的所有短划线替换为空字符串。
  2. 使用 apply 方法和匿名函数:

    • raw_data_df[“Search Text”].apply(lambda x: …) 将 apply 方法应用于 Search Text 列,对每一行数据执行匿名函数。
    • lambda x: x.split(“_”)[0] if “_” in x else x 定义了一个匿名函数,该函数接受一个参数 x(即每一行的 Search Text 值)。
    • if “_” in x else x 判断 x 是否包含下划线。
      • 如果包含下划线,则使用 x.split(“_”)[0] 将字符串按 _ 分割,并取第一个元素(即下划线之前的部分)。
      • 如果不包含下划线,则直接返回 x(即删除短划线后的完整合同编号)。

注意事项

  • apply 方法虽然灵活,但在处理大型 DataFrame 时可能会比较慢。如果性能是关键,可以考虑使用 np.where 或 pd.Series.mask 等向量化操作。
  • 确保理解匿名函数中的条件判断逻辑,以适应不同的数据处理需求。
  • 在实际应用中,可能需要根据数据的具体格式进行适当的调整。

总结

本文介绍了如何使用 Pandas 的 apply 方法和匿名函数,基于条件生成新的列。这种方法可以有效地处理字符串数据,并避免直接使用三元运算符可能遇到的问题。通过理解代码示例和注意事项,你可以灵活地应用于各种数据处理场景。

相关标签:

app ai pandas 运算符 三元运算符 if 字符串 Lambda number

大家都在看:

小红书千帆APP有电脑版吗_小红书千帆APP电脑端使用情况说明
小可搜搜App如何保护个人隐私 小可搜搜App的隐私安全设置项
欧易APP官方下载 OKX官网直达入口+完整下载指南
火币官网打不开? HTX最新地址+官方APP下载方案
欧易OKX安卓苹果入口 2025欧易官方APP下载渠道
温馨提示: 本文最后更新于2025-10-20 16:33:06,某些文章具有时效性,若有错误或已失效,请在下方留言或联系在线客服
文章版权声明 1 本网站名称: 创客网
2 本站永久网址:https://new.ie310.com
1 本文采用非商业性使用-相同方式共享 4.0 国际许可协议[CC BY-NC-SA]进行授权
2 本站所有内容仅供参考,分享出来是为了可以给大家提供新的思路。
3 互联网转载资源会有一些其他联系方式,请大家不要盲目相信,被骗本站概不负责!
4 本网站只做项目揭秘,无法一对一教学指导,每篇文章内都含项目全套的教程讲解,请仔细阅读。
5 本站分享的所有平台仅供展示,本站不对平台真实性负责,站长建议大家自己根据项目关键词自己选择平台。
6 因为文章发布时间和您阅读文章时间存在时间差,所以有些项目红利期可能已经过了,能不能赚钱需要自己判断。
7 本网站仅做资源分享,不做任何收益保障,创业公司上收费几百上千的项目我免费分享出来的,希望大家可以认真学习。
8 本站所有资料均来自互联网公开分享,并不代表本站立场,如不慎侵犯到您的版权利益,请联系79283999@qq.com删除。

本站资料仅供学习交流使用请勿商业运营,严禁从事违法,侵权等任何非法活动,否则后果自负!
THE END
喜欢就支持一下吧
点赞10赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容