您的位置 首页 编程知识

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

本文旨在解决使用 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 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 向 Excel 添加新列并填充数据的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/12949.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部