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

使用 pandas 向 excel 添加新列并填充数据

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

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

使用 np.where 进行条件赋值

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

其基本语法如下:

import numpy as npdf['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 pdimport 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=2dfH['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=3dfH['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=3dfH['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 向 Excel 添加新列并填充数据的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1366135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月14日 05:00:29
下一篇 2025年12月14日 05:00:36

相关推荐

发表回复

登录后才能评论
关注微信