首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

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

编程知识
2024年09月09日 12:53

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

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

image

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

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

# -*- 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表格文件,从而完成我们的需求。

  至此,大功告成。

From:https://www.cnblogs.com/fkxxgis/p/18404400
本文地址: http://shuzixingkong.net/article/1855
0评论
提交 加载更多评论
其他文章 Cloudflare D1 - 免费数据存储
前言 自从上次将博客项目的图片从 七牛云 迁到了 Cloudflare R2 之后就发现,Cloudflare 这个赛博菩萨的产品是真的不错,非常的适合白嫖,DevNow 项目作为一个开源博客,整体来说是希望越少依赖一些服务越好,使整个构建、部署流程更加的 轻便 和 快捷 ,让对于前端不是很熟的同学
Cloudflare D1 - 免费数据存储 Cloudflare D1 - 免费数据存储 Cloudflare D1 - 免费数据存储
KernelWarehouse:英特尔开源轻量级涨点神器,动态卷积核突破100+ | ICML 2024
动态卷积学习n个静态卷积核的线性混合,加权使用它们输入相关的注意力,表现出比普通卷积更优越的性能。然而,它将卷积参数的数量增加了n倍,因此并不是参数高效的。这导致不能探索n>100的设置(比典型设置n<10大一个数量级),推动动态卷积性能边界提升的同时享受参数的高效性。为此,论文提出了K
KernelWarehouse:英特尔开源轻量级涨点神器,动态卷积核突破100+ | ICML 2024 KernelWarehouse:英特尔开源轻量级涨点神器,动态卷积核突破100+ | ICML 2024 KernelWarehouse:英特尔开源轻量级涨点神器,动态卷积核突破100+ | ICML 2024
tarjan—算法的神(一)
本篇包含 tarjan 求强连通分量、边双连通分量、割点 部分, tarjan 求点双连通分量、桥(割边)在下一篇。 伟大的 Robert Tarjan 创造了众多被人们所熟知的算法及数据结构,最著名的如:(本文的)连通性相关的 tarjan 算法,Splay-Tree,Toptree,tarjan
tarjan—算法的神(一) tarjan—算法的神(一) tarjan—算法的神(一)
超轻量级、支持插件的 .NET 网络通信框架
前言 给大家推荐一个轻量级的、支持插件的综合网络通信库:TouchSocket。 TouchSocket 的基础通信功能包括 TCP、UDP、SSL、RPC 和 HTTP。其中,HTTP 服务器支持 WebSocket、静态网页、XML-RPC、WebAPI 和 JSON-RPC 等扩展插件。 此外
超轻量级、支持插件的 .NET 网络通信框架 超轻量级、支持插件的 .NET 网络通信框架 超轻量级、支持插件的 .NET 网络通信框架
秋天希望的田野,九月最后的救园:终身会员计划
在7月15日发出求救信后快2个月了,很多园友出手相救——买会员、买周边、献捐助、送赞助,让救园走在希望的田野上,非常感谢每一位出手相救的园友! 在这救园期间,很多园友提出了很多很好的商业化与发展建议,我们会结合园子的实际情况与发展进展,参考大家的建议。 在这救园期间,有投资人过来谈投资,有企业过来谈
秋天希望的田野,九月最后的救园:终身会员计划 秋天希望的田野,九月最后的救园:终身会员计划
生财有迹 | 您专属的资产跟踪与分析工具
生财有迹(Wealth Tracker)是一款专注于个人资产分析的应用程序。其核心功能是:全面记录并展示用户的资产状况,帮助用户轻松了解财务现状;运用 AI 能力,结合每种资产的特性和当前环境,提供适宜的财务建议。
生财有迹 | 您专属的资产跟踪与分析工具 生财有迹 | 您专属的资产跟踪与分析工具 生财有迹 | 您专属的资产跟踪与分析工具
FastGPT 正式接入 Flux,准备好迎接 AI 绘画的狂风了么?
Flux 大家最近都听说了吧?它是一款新推出的 AI 绘画模型,拳打 Stable Diffusion 3,脚踢 Midjourney,整个 AI 绘画界都沸腾了。 Flux 的主创团队来自由 Stable Diffusion 原班人马打造的黑森林实验室 (BlackForestLabs),2024
FastGPT 正式接入 Flux,准备好迎接 AI 绘画的狂风了么? FastGPT 正式接入 Flux,准备好迎接 AI 绘画的狂风了么? FastGPT 正式接入 Flux,准备好迎接 AI 绘画的狂风了么?
面试官:如何实现线程池任务编排?
任务编排(Task Orchestration)是指管理和控制多个任务的执行流程,确保它们按照预定的顺序正确执行。 1.为什么需要任务编排? 在复杂的业务场景中,任务间通常存在依赖关系,也就是某个任务会依赖另一个任务的执行结果,在这种情况下,我们需要通过任务编排,来确保任务按照正确的顺序进行执行。
面试官:如何实现线程池任务编排? 面试官:如何实现线程池任务编排?