Pandas - read_table 读取所选行

Pandas - read_table read selected lines

我使用的文本文件在前 6 行(包括空行)中包含一些基本信息。我必须将数据导入、处理和导出到另一个 csv。这是前 6 行的示例:

Foov7.9 - bar.raw created at 10:45:25 on 10.02.2015:
(empty row)
(empty row)
A B C D
a b c d
(empty row)

在 pandas 中,我使用第 4 行:

A B C D

作为数据帧的header:

data1 = pd.read_table(dataset1,header = 1, skiprows = (4,5), index_col=None, delimiter=r"\t", engine='python')

在处理数据后写入 to_csv 时,我现在想放回前 6 行,但在读取这些行时我已经失败了。通过仅将第 4 行的 header 写入 csv,我将丢失所有附加信息。 我怎样才能读取这些行,然后将它们放回 csv 中而不干扰数据帧 header?

很可能有更简洁的方法来做到这一点,但它有效并且只读取一次数据,以提高性能:

(1) 读取数据

in_df = pd.read_excel("test.xls", header=0)

(2) 创建一个 header 供以后使用

header = in_df[:5]  #only first rows

(3) 保存 header 列以便稍后连接

cols = list(header.columns.values) #a list with headers

(4) 创建数据处理副本

data = in_df
data.rename(columns=in_df.iloc[2,:], inplace=True) # rename your columns
data = data[5:]                    # you want just the data body
data = data.reset_index(drop = True)  # reindex

#DO WHATEVER WITH DATA

(5) 输出:连接 [header & 数据]。写入输出

data.columns = cols      # we need the old col names for concat
out_df = pd.concat([header,data])    # do the concat
out_df = out_df.reset_index(drop = True)  # reset index (if you want to)
out_df.to_csv("out.csv")   #write it. out_df.to_csv("out.csv", index = False) if you don't want index in output