Python批量将Excel内指定列的数据向上移动一行

chatgpt/2023/9/26 14:47:15

  本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,对其中的每一个文件加以操作——将其中指定的若干列的数据部分都向上移动一行,并将所有操作完毕的Excel表格文件中的数据加以合并,生成一个新的Excel文件的方法。

  首先,我们明确一下本文的需求。在一个文件夹内,有大量的Excel表格文件(以.csv格式文件为例),其中每一个文件都有着类似如下图所示的数据特征;我们希望,对于下图中紫色框内的列,其中的数据部分(每一列都有一个列名,这个列名不算做数据部分)都向上提升一行(比如原本数据部分的第2行变到第1行,原本第3行变到第2行,以此类推)。

  由上图也可以看到,需要加以数据操作的列,有的在原本数据部分的第1行就没有数据,而有的在原本的数据部分中第1行也有数据;对于后者,我们在数据向上提升一行之后,相当于原本第1行的数据就被覆盖掉了。此外,很显然在每一个文件的操作结束后,加以处理的列的数据部分的最后一行肯定是没有数据的;因此在合并全部操作后的文件之前,还希望将每一个操作后文件最后一行删除。

  知道了需求,我们就可以开始代码的撰写;具体代码如下。

# -*- coding: utf-8 -*-
"""
Created on Fri May 19 01:47:06 2023@author: fkxxgis
"""import os
import pandas as pdoriginal_path = "E:/01_Reflectivity/25_2022Data_New"
result_path = "E:/01_Reflectivity/26_Train_Model_New"result_df = pd.DataFrame()for file in os.listdir(original_path):if file.endswith(".csv"):df = pd.read_csv(os.path.join(original_path, file))columns_move_index = list(range(8, 16)) + list(range(17, 36))for columns_index in columns_move_index:for i in range(len(df) - 1):df.iat[i, columns_index] = df.iat[i + 1, columns_index]if len(df):df = df.drop(len(df) - 1)# df = df.iloc[ : , 1 : ]result_df = pd.concat([result_df, df])result_df.to_csv(os.path.join(result_path, "Train_Model_0715_Main.csv"), index = False)

  其中,original_path表示存放有多个待处理的Excel表格文件的文件夹路径,result_path则是结果Excel表格文件的存放路径。

  首先,我们通过result_df = pd.DataFrame()创建一个空的DataFrame,用于保存处理后的数据。接下来,遍历原始文件夹中的所有文件,并找到文件夹内以.csv结尾的文件;随后,读取这些.csv文件,并将其保存到df中。

  其次,我们通过columns_move_index = list(range(8, 16)) + list(range(17, 36))指定需要移动数据的列的索引范围,并随后遍历需要移动数据的列。接下来的df.iat[i, columns_index] = df.iat[i + 1, columns_index]表示将当前行的数据替换为下一行对应的数据。

  接下来,我们通过if len(df):判断是否DataFrame不为空,如果是的话就删除DataFrame中的最后一行数据;随后,将处理后的DataFrame连接到result_df中。

  最后,我们通过result_df.to_csv()函数,将最终处理后的DataFrame保存为一个新的Excel表格文件,从而完成我们的需求。

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-5313313.html

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

第四章:C语言的条件分支控制结构

文章目录 1、分支控制if..else...2、分支控制if..else if...else...(嵌套)3、Switch4、goto 1、分支控制if…else… 标准格式:if{}else{} {}里面的语句表示条件是否成立再决定是否执行 2、分支控制if…else if…else…(嵌套) 标准格式:if{}else if{}…

git命令总合集

git checkout&#xff08;切换到已经存在的分支其中&#xff09; 1.git checkout <branch-name> 切换到已经存在的分支其中&#xff0c;<branch-name>是你要切换到的分支名称。2.git checkout -b <new-branch-name> 要创建一个新分支并立即切换到该分支其…

Unity 自动在关闭程序时Kill已启动的DoTween动画

自动在关闭程序时Kill已启动的DoTween动画 食用方法 食用方法 把脚本放到文件夹内即可&#xff0c;会在运行时自动加入到场景中 using System.Collections; using System.Collections.Generic; using UnityEngine; using ZYFLongLive;namespace ZYF {public class KillAllTwe…

无涯教程-jQuery - Select menu组件函数

小部件选择菜单功能可与JqueryUI中的小部件一起使用&#xff0c;它提供了可替换样式的选择元素。一个简单的选择菜单如下所示。 Select menu - 语法 $( "#menu" ).selectmenu(); Select menu - 示例 以下是显示选择菜单用法的简单示例- <!doctype html> &…

【C# 6.0】云LIS平台源码

基于云计算的区域LIS平台为医疗机构改善患者服务质量提供了强有力的支持&#xff0c;“以患者为核心”这一理念得到了充分实现&#xff0c;可以解决各医院LIS建设水平参差不齐的现状&#xff0c;并完善各医院内LIS系统的功能&#xff0c;实现数据标准统一、功能完善、性能可靠&…

Mendix是如何支持多语言的?

前言 国际化的支持能力&#xff0c;至关重要。这类功能的缺失&#xff0c;将会在市场竞争、用户体验、合作关系以法律法规方面遇到重大挑战&#xff0c;这些都是可能对其成功产生致命影响的问题。 比如在某些国家和地区&#xff0c;政府可能会对不支持本地语言和货币的软件系…

《ChatGPT原理最佳解释,从根上理解ChatGPT》

【热点】 2022年11月30日&#xff0c;OpenAI发布ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c; 即聊天机器人程序 &#xff0c;开启AIGC的研究热潮。 ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够…

Jetson Nano之ROS入门 -- YOLO目标检测与定位

文章目录 前言一、yolo板端部署推理二、目标深度测距三、目标方位解算与导航点设定1、相机成像原理2、Python实现目标定位 总结 前言 Darknet_ros是一个基于ROS&#xff08;机器人操作系统&#xff09;的开源深度学习框架&#xff0c;它使用YOLO算法进行目标检测和识别。YOLO算…
推荐文章