Python 将表格文件中某些列的数据整体向上移动一行
本文介绍基于 Python 语言,针对一个文件夹下大量的 Excel 表格文件,对其中的每一个文件加以操作——将其中指定的若干列的数据部分都向上移动一行,并将所有操作完毕的 Excel 表格文件中的数据加以合并,生成一个新的 Excel 文件的方法。
首先,我们明确一下本文的需求。在一个文件夹内,有大量的 Excel 表格文件(以.csv
格式文件为例),其中每一个文件都有着类似如下图所示的数据特征;我们希望,对于下图中紫色框内的列,其中的数据部分(每一列都有一个列名,这个列名不算数据部分)都向上提升一行(比如原本数据部分的第2
行变到第1
行,原本第3
行变到第2
行,以此类推)。
由上图也可以看到,需要加以数据操作的列,有的在原本数据部分的第1
行就没有数据,而有的在原本的数据部分中第1
行也有数据;对于后者,我们在数据向上提升一行之后,相当于原本第1
行的数据就被覆盖掉了。此外,很显然在每一个文件的操作结束后,加以处理的列的数据部分的最后一行肯定是没有数据的,因此在合并全部操作后的文件之前,还希望将每一个操作后文件的最后一行删除。
知道了需求,我们就可以开始代码的撰写;具体代码如下。
其中,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
评论