当前位置: 首页 > news >正文

pandas赋值不成功

最近遇到个奇葩问题,从一个pandas dataframe中取值赋值给另外一个df列结果没有赋值成功,赋值都是空。代码如下:

def replace_yaml_extension(value):if pd.notnull(value) and value != '' and value.endswith('.yml'):return value.replace('.yml', '.yaml')else:return valuedef apply_replace_yaml_extension(series):return series.apply(replace_yaml_extension)diff_df[f'diff_{v}'] = apply_replace_yaml_extension(result_outer[v])

v=key,diff_key列没取到值,result_outer中key列数据不为空,更改代码按行获取还是空值。因为result_outer这个dataframe是两个其他df合并的,然后看数据发现 result_outer 索引不连续,如:1、2、3、4、5、6、8、11、13、15、16、17,于是想着是不是因为索引不连续引起的。
如果你遇到了Pandas DataFrame中索引不连续的问题,并且这影响到了你的代码执行结果,那么确实可能是因为索引不连续导致的问题。在Pandas中,DataFrame的索引可以是连续的也可以是不连续的。当索引不连续时,某些操作可能会受到影响。

索引不连续的影响

  1. 数据对齐问题

    • 当DataFrame的索引不连续时,某些操作如合并、连接或应用函数时可能会遇到数据对齐问题。
  2. 索引不匹配

    • 在进行DataFrame的列操作时,如果DataFrame的索引不连续或不匹配,可能会导致某些行被忽略或结果不正确。
  3. 应用函数时的问题

    • 如果DataFrame的索引不连续,应用函数时可能会出现问题,特别是当函数依赖于索引时。

你的具体情况

对于我的问题,如果 result_outer 的索引不连续,那么在应用函数时可能会导致一些行未被正确处理。具体来说,如果 result_outer 的索引不连续,那么 apply_replace_yaml_extension 函数可能无法按预期处理每一行。

解决方案

  1. 确认DataFrame的索引

    • 确认 result_outer 的索引是连续的。
    • 可以使用 result_outer.index 查看索引情况。
  2. 重置索引

    • 如果索引不连续,可以使用 reset_index 方法重置索引,使索引连续。
    • 示例:
      result_outer = result_outer.reset_index(drop=True)
      
  3. 应用函数

    • 重置索引后,再次尝试应用函数。
    • 示例:
      diff_df['diff_key'] = apply_replace_yaml_extension(result_outer['key'])
      

示例代码

下面是一个完整的示例,展示了如何检查和重置索引:

import pandas as pd# 示例数据
data = {'key': ['file1.yml', 'file2.yml', 'file3.yaml', ''],'other': [1, 2, 3, 4]
}result_outer = pd.DataFrame(data)# 检查索引是否连续
print("Original index:", result_outer.index)# 重置索引
result_outer = result_outer.reset_index(drop=True)# 再次检查索引
print("Reset index:", result_outer.index)def replace_yaml_extension(value):if pd.notnull(value) and value != '' and value.endswith('.yml'):return value.replace('.yml', '.yaml')else:return valuedef apply_replace_yaml_extension(series):return series.apply(replace_yaml_extension)# 初始化 diff_df
diff_df = pd.DataFrame()# 处理 'key' 列
diff_df['diff_key'] = apply_replace_yaml_extension(result_outer['key'])# 输出结果
print(diff_df)

这段代码将重置 result_outer 的索引,并处理 'key' 列。如果你的代码与这段示例相似,但仍然出现问题,请检查 result_outer 的索引是否正确重置,并确保 diff_df 正确初始化。
最终重置索引后发现能够正常赋值了!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 职业教育物联网实验实训室建设应用案例
  • 入营测评题解
  • BeanFactory 和FactoryBean的区别
  • linux常用网络工具汇总二
  • Duilib 二
  • openfeign本地试用
  • 工厂模式 vs 策略模式:Java设计模式详细对比
  • 科学碳目标|科学碳倡议|SBTI认证|科学基础目标倡议
  • JSONB字段搜索走索引
  • 【人工智能】常用的人工智能框架、模型、使用方法、应用场景以及代码实例的概述
  • 嵌入式实时操作系统VxWorks面试题及参考答案(4万字长文)
  • 学习笔记第十九天
  • 网络编程先验知识1
  • Flake8 和 Autopep8 使用指南
  • 用AI生成海报设计!AI绘画大模型Flux的在线使用!
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • ESLint简单操作
  • JavaScript 基础知识 - 入门篇(一)
  • js递归,无限分级树形折叠菜单
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • python3 使用 asyncio 代替线程
  • socket.io+express实现聊天室的思考(三)
  • vue 配置sass、scss全局变量
  • vuex 笔记整理
  • vue数据传递--我有特殊的实现技巧
  • 第2章 网络文档
  • 动态魔术使用DBMS_SQL
  • 二维平面内的碰撞检测【一】
  • 构建工具 - 收藏集 - 掘金
  • 互联网大裁员:Java程序员失工作,焉知不能进ali?
  • 你真的知道 == 和 equals 的区别吗?
  • 微信小程序实战练习(仿五洲到家微信版)
  • 小程序button引导用户授权
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 我们雇佣了一只大猴子...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # 飞书APP集成平台-数字化落地
  • ## 基础知识
  • #1014 : Trie树
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (2)空速传感器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (笔试题)分解质因式
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (一)Docker基本介绍
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET MVC 验证码