当前位置:首页 > 文章列表 > 文章 > python教程 > Pandas添加列并填充数据方法

Pandas添加列并填充数据方法

2025-08-03 23:36:31 0浏览 收藏

在使用 Pandas 处理 Excel 数据时,你是否遇到过添加新列但数据为空的困扰?本文针对这一常见问题,提供了一套实用的解决方案,重点讲解如何利用 NumPy 库中的 `np.where` 函数,基于条件判断为 Pandas DataFrame 添加新列并填充数据。通过示例代码,详细展示了如何根据现有列的值,灵活地为新列赋值,例如,比较 `cellname1`、`cellname2`、`cellname3` 及其对应值,并根据比较结果填充 `resultcellname` 和 `resultcellnamevalue` 列。掌握 `np.where` 的使用技巧,能够有效解决 Pandas 数据处理中的条件赋值难题,提升数据处理效率。

使用 Pandas 向 Excel 添加新列并填充数据

本文旨在解决使用 Pandas 向 Excel 文件添加新列时,仅添加了列名而没有填充数据的问题。通过分析常见原因和提供可行的解决方案,帮助开发者正确地向 DataFrame 添加新列并根据条件填充相应的值。本文将重点介绍使用 np.where 函数进行条件赋值的方法,并提供示例代码。

在使用 Pandas 处理 Excel 数据时,经常需要向现有的 DataFrame 添加新的列。一个常见的问题是,虽然新列成功添加,但所有单元格都是空的。这通常是因为在添加列时,没有正确地为新列赋值,或者赋值逻辑存在问题。以下介绍一种使用 np.where 函数,基于条件判断来填充新列值的方法。

使用 np.where 进行条件赋值

np.where 函数是 NumPy 库中的一个强大工具,它允许你根据条件从两个数组中选择元素。在 Pandas 中,我们可以利用 np.where 来根据 DataFrame 中现有列的值,为新列赋值。

其基本语法如下:

import numpy as np
df['new_column'] = np.where(condition, value_if_true, value_if_false)
  • condition: 一个布尔数组,用于指定条件。
  • value_if_true: 如果条件为真,则将该值赋给新列。
  • value_if_false: 如果条件为假,则将该值赋给新列。

示例

假设我们有一个 DataFrame dfH,其中包含 cellname1、cellname1value、cellname2、cellname2value、cellname3、cellname3value 等列。我们希望添加 resultcellname 和 resultcellnamevalue 两列,并根据以下条件填充它们:

  • 如果 cellname1 等于 cellname2 且 cellname1value 等于 cellname2value,则 resultcellname 的值为 cellname1,resultcellnamevalue 的值为 cellname1value。
  • 如果 cellname1 等于 cellname3 且 cellname1value 等于 cellname3value,则 resultcellname 的值为 cellname1,resultcellnamevalue 的值为 cellname1value。
  • 如果 cellname2 等于 cellname3 且 cellname2value 等于 cellname3value,则 resultcellname 的值为 cellname2,resultcellnamevalue 的值为 cellname2value。

以下代码展示了如何使用 np.where 实现这个逻辑:

import pandas as pd
import numpy as np

# 假设 dfH 已经存在并包含数据
# 例如:
data = {'cellname1': ['A', 'B', 'C', 'A'],
        'cellname1value': [1, 2, 3, 1],
        'cellname2': ['A', 'C', 'C', 'B'],
        'cellname2value': [1, 4, 3, 5],
        'cellname3': ['A', 'B', 'C', 'A'],
        'cellname3value': [1, 2, 3, 1]}
dfH = pd.DataFrame(data)

# 初始化新列
dfH['resultcellname'] = ''
dfH['resultcellnamevalue'] = ''

# 检查 if 1=2
dfH['resultcellname'] = np.where((dfH['cellname1']==dfH['cellname2']) & (dfH['cellname1value']==dfH['cellname2value']), dfH['cellname1'], dfH['resultcellname'])
dfH['resultcellnamevalue'] = np.where((dfH['cellname1']==dfH['cellname2']) & (dfH['cellname1value']==dfH['cellname2value']), dfH['cellname1value'], dfH['resultcellnamevalue'])

# 检查 if 1=3
dfH['resultcellname'] = np.where((dfH['cellname1']==dfH['cellname3']) & (dfH['cellname1value']==dfH['cellname3value']), dfH['cellname1'], dfH['resultcellname'])
dfH['resultcellnamevalue'] = np.where((dfH['cellname1']==dfH['cellname3']) & (dfH['cellname1value']==dfH['cellname3value']), dfH['cellname1value'], dfH['resultcellnamevalue'])

# 检查 if 2=3
dfH['resultcellname'] = np.where((dfH['cellname2']==dfH['cellname3']) & (dfH['cellname2value']==dfH['cellname3value']), dfH['cellname2'], dfH['resultcellname'])
dfH['resultcellnamevalue'] = np.where((dfH['cellname2']==dfH['cellname3']) & (dfH['cellname2value']==dfH['cellname3value']), dfH['cellname2value'], dfH['resultcellnamevalue'])

print(dfH)

注意事项

  • 确保 condition 是一个布尔数组,其长度与 DataFrame 的行数相同。
  • value_if_true 和 value_if_false 可以是单个值或数组。
  • 如果需要处理多个条件,可以使用多个 np.where 语句,或者使用 Pandas 的 apply 函数。
  • 在写入 Excel 文件之前,确保 DataFrame 的数据类型正确。

总结

使用 np.where 函数是向 Pandas DataFrame 添加新列并根据条件填充数据的有效方法。通过理解 np.where 的工作原理并结合实际需求,可以灵活地处理各种数据处理任务。在实际应用中,需要根据具体的数据结构和业务逻辑,调整条件判断和赋值方式,以达到最佳效果。

今天关于《Pandas添加列并填充数据方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

联想电脑电源错误0x000000FE怎么解决联想电脑电源错误0x000000FE怎么解决
上一篇
联想电脑电源错误0x000000FE怎么解决
WeakMap与Map区别全解析
下一篇
WeakMap与Map区别全解析
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    499次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • PandaWiki开源知识库:AI大模型驱动,智能文档与AI创作、问答、搜索一体化平台
    PandaWiki开源知识库
    PandaWiki是一款AI大模型驱动的开源知识库搭建系统,助您快速构建产品/技术文档、FAQ、博客。提供AI创作、问答、搜索能力,支持富文本编辑、多格式导出,并可轻松集成与多来源内容导入。
    25次使用
  • SEO  AI Mermaid 流程图:自然语言生成,文本驱动可视化创作
    AI Mermaid流程图
    SEO AI Mermaid 流程图工具:基于 Mermaid 语法,AI 辅助,自然语言生成流程图,提升可视化创作效率,适用于开发者、产品经理、教育工作者。
    837次使用
  • 搜获客笔记生成器:小红书医美爆款内容AI创作神器
    搜获客【笔记生成器】
    搜获客笔记生成器,国内首个聚焦小红书医美垂类的AI文案工具。1500万爆款文案库,行业专属算法,助您高效创作合规、引流的医美笔记,提升运营效率,引爆小红书流量!
    854次使用
  • iTerms:一站式法律AI工作台,智能合同审查起草与法律问答专家
    iTerms
    iTerms是一款专业的一站式法律AI工作台,提供AI合同审查、AI合同起草及AI法律问答服务。通过智能问答、深度思考与联网检索,助您高效检索法律法规与司法判例,告别传统模板,实现合同一键起草与在线编辑,大幅提升法律事务处理效率。
    872次使用
  • TokenPony:AI大模型API聚合平台,一站式接入,高效稳定高性价比
    TokenPony
    TokenPony是讯盟科技旗下的AI大模型聚合API平台。通过统一接口接入DeepSeek、Kimi、Qwen等主流模型,支持1024K超长上下文,实现零配置、免部署、极速响应与高性价比的AI应用开发,助力专业用户轻松构建智能服务。
    938次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码