我使用的文本文件包含前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中,而不会干扰数据帧标题?
答案 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