Pandas - read_table读取选定的行

时间:2015-02-11 14:04:35

标签: python csv pandas

我使用的文本文件包含前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)

在熊猫中我使用第4行:

A B C D

作为数据帧的标题:

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

在处理数据后写入to_csv时,我现在想要放回前6行但是在读取行时我已经失败了。通过单独将第4行的标题写入csv,我将丢失所有其他信息。 如何读取这些行,然后将它们放回到csv中,而不会干扰数据帧标题?

1 个答案:

答案 0 :(得分:0)

最有可能采用更简洁的方式来实现它,但它可以工作,并且只读取一次数据,以提高性能:

(1)读取数据

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

(2)为以后创建标题

header = in_df[:5]  #only first rows

(3)保存concat的标题列

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)输出:concat [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