将pandas数据框中的数据行移动到最后一列的末尾

Python新手,请温柔。 我有多个Excel电子表格的两个“中间部分”的数据,我想将其分离成一个pandas数据框。 以下是一个数据截图的链接。 在每个文件中,我的标题在行4中,数据在行5-15,列B:O中。 标题和数据然后继续在行21上的标题,在行22-30,列B:L中的数据。 我想从第二组移动标题和数据,并将它们追加到第一组数据的末尾。

此代码捕获第4行的数据头和第B:O列中的数据,但捕获包含第二个Header和第二个数据集的Header下的所有行。 如何移动第二组数据并将其附加到第一组数据之后?

path =r'C:\Users\sarah\Desktop\Original' allFiles = glob.glob(path + "/*.xls") frame = pd.DataFrame() list_ = [] for file_ in allFiles: df = pd.read_excel(file_,sheetname="Data1", parse_cols="B:O",index_col=None, header=3, skip_rows=3 ) list_.append(df) frame = pd.concat(list_) 

我的数据的屏幕截图

在这里输入图像描述

如果所有的Excel文件都有相同的行数,而且这是一次性操作,那么您可以简单地在read_excel中对这些数字进行硬编码。 如果没有,这将是一个有点棘手,但你几乎遵循相同的程序:

 for file_ in allFiles: top = pd.read_excel(file_, sheetname="Data1", parse_cols="B:O", index_col=None, header=4, skip_rows=3, nrows=14) # Note the nrows kwag bot = pd.read_excel(file_, sheetname="Data1", parse_cols="B:L", index_col=None, header=21, skip_rows=20, nrows=14) list_.append(top.join(bot, lsuffix='_t', rsuffix='_b')) 

你可以这样做:

 df1 = pd.read_excel(file_,sheetname="Data1", parse_cols="B:O",index_col=None, header=3, skip_rows=3) df2 = pd.read_excel(file_,sheetname="Data1", parse_cols="B:L",index_col=None, header=20, skip_rows=20) # pay attention at `axis=1` df = pd.concat([df1,df2], axis=1)