Python将表格文件中某些列的数据整体向上移动一行

本文介绍基于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/99_Model/02_Extract_Data/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表格文件,从而完成我们的需求。

至此,大功告成。

相关推荐
cuber膜拜23 分钟前
jupyter使用 Token 认证登录
ide·python·jupyter
张登杰踩1 小时前
pytorch2.5实例教程
pytorch·python
codists1 小时前
《CPython Internals》阅读笔记:p353-p355
python
Change is good1 小时前
selenium定位元素的方法
python·xpath定位
Change is good1 小时前
selenium clear()方法清除文本框内容
python·selenium·测试工具
大懒猫软件6 小时前
如何运用python爬虫获取大型资讯类网站文章,并同时导出pdf或word格式文本?
python·深度学习·自然语言处理·网络爬虫
XianxinMao8 小时前
RLHF技术应用探析:从安全任务到高阶能力提升
人工智能·python·算法
查理零世9 小时前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
汤姆和佩琦10 小时前
2025-1-21-sklearn学习(43) 使用 scikit-learn 介绍机器学习 楼上阑干横斗柄,寒露人远鸡相应。
人工智能·python·学习·机器学习·scikit-learn·sklearn
HyperAI超神经10 小时前
【TVM教程】为 ARM CPU 自动调优卷积网络
arm开发·人工智能·python·深度学习·机器学习·tvm·编译器