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

时间:2016-08-23 21:51:16

标签: python excel pandas dataframe

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

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

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_)

Screenshot of my data

enter image description here

1 个答案:

答案 0 :(得分:1)

如果您的所有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'))