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

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

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

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

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

python 复制代码
# -*- coding: utf-8 -*-
"""
Created on Fri May 19 01:47:06 2023

@author: fkxxgis
"""

import os
import pandas as pd

original_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

相关推荐
databook12 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar13 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805113 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_13 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机20 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机21 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机21 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机21 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i21 小时前
drf初步梳理
python·django
每日AI新事件21 小时前
python的异步函数
python